DataGridView列自适应宽度

来源:http://www.cnblogs.com/wolf-sun/p/3480104.html

在做winform项目中,数据控件DataGridView的使用多多少少是会用到的,如果不设置它的属性,默认情况下是不会自适应宽度的,你想查看某项的数据,就不得不将标题栏拖来拖去,挺烦的。

结果

没设置自适应列宽的

使用自适应列宽的

185         /// <summary>
186         /// 使DataGridView的列自适应宽度
187         /// </summary>
188         /// <param name="dgViewFiles"></param>
189         private void AutoSizeColumn(DataGridView dgViewFiles)
190         {
191             int width = 0;
192             //使列自使用宽度
193             //对于DataGridView的每一个列都调整
194             for (int i = 0; i < dgViewFiles.Columns.Count; i++)
195             {
196                 //将每一列都调整为自动适应模式
197                 dgViewFiles.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells);
198                 //记录整个DataGridView的宽度
199                 width += dgViewFiles.Columns[i].Width;
200             }
201             //判断调整后的宽度与原来设定的宽度的关系,如果是调整后的宽度大于原来设定的宽度,
202             //则将DataGridView的列自动调整模式设置为显示的列即可,
203             //如果是小于原来设定的宽度,将模式改为填充。
204             if (width > dgViewFiles.Size.Width)
205             {
206                 dgViewFiles.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
207             }
208             else
209             {
210                 dgViewFiles.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
211             }
212             //冻结某列 从左开始 0,1,2
213             dgViewFiles.Columns[1].Frozen = true;
214         }

调用:

 //调整列宽
 AutoSizeColumn(dgViewFiles);

 



 

代码中有用到通过反射属性来获取特殊名称来绑定DataGridView

http://www.cnblogs.com/wolf-sun/p/3854262.html

 /// <summary>
161         /// 窗体加载
162         /// </summary>
163         /// <param name="sender"></param>
164         /// <param name="e"></param>
165         private void MainForm_Load(object sender, EventArgs e)
166         {
167             //通过反射的方式添加列
168             Type type = typeof(FileMessage);
169             PropertyInfo[] propertyInfos = type.GetProperties();
170             foreach (PropertyInfo propertyInfo in propertyInfos)
171             {
172                 object[] objs = propertyInfo.GetCustomAttributes(typeof(DescriptionAttribute), true);
173                 if (objs.Length > 0)
174                 {
175                     DescriptionAttribute attr = objs[0] as DescriptionAttribute;
176                     string result = attr.Description;
177                     this.dgViewFiles.Columns.Add(result, result);
178                 }
179             }
180             //调整列宽
181             AutoSizeColumn(dgViewFiles);
182
183
184         }

View Code

 /// <summary>
11     /// 文件信息
12     /// </summary>
13     public class FileMessage
14     {
15         /// <summary>
16         /// 序号
17         /// </summary>
18         [Description("序号")]
19         public int intCount { get; set; }
20         /// <summary>
21         /// 文件路径
22         /// </summary>
23         [Description("文件路径")]
24         public string strFilePath { set; get; }
25         /// <summary>
26         /// 文件名
27         /// </summary>
28         [Description("文件名")]
29         public string strFileName { set; get; }
30         /// <summary>
31         /// 文件类型
32         /// </summary>
33         [Description("文件类型")]
34         public string strFileType { set; get; }
35     }

View Code

 

时间: 2024-09-28 03:51:10

DataGridView列自适应宽度的相关文章

css 左列自适应宽度的一行两列布局

今天想实现一行两列的布局,左列宽度自适应,右列宽度保持不变.HTML的写法是: <div id="main">     <div id="left"><p>左列</p></div>     <div id="right"><p>右列</p></div> </div> 现在加CSS,要实现的效果是mian是可变的,right层宽度

div+css 三列自适应等高且中列宽度自适应

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

推荐:网页中三列自适应高度布局的实现

网页|自适应 三列的布局,一个固定宽度的左列是导航列,右列可以放Google Ads 或者 Flickr的像册,自适应宽度的中间列是主要内容. 特点: 有一个自适应宽度的中间列与固定的宽度左右列. 中间列的主要内容首先出现在网页中. 可以允许任一个列的内容为最高. 非常简单的CSS和最少的Hacks. Step 1: 搭建结构 先从header, footer, and container开始. <div id="header"></div> <div i

在SWT中使用OLE操作Excel(四):使单元格或列自动调整宽度

在实际应用中,常常会遇到单元格的值比较长而被遮住,用户不得不手动调整宽度,如果能通过程序就自动调整宽度就会很方便了.实际上在通过OleView.exe这个工具查询得知Range有AutoFit的方法,它的Id是0x000000ed,那么如果获得了Range的引用,只要调用AutoFit这个方法,就可以自动调整宽度了.下面请看代码与示例效果: package com.jrkui.example.excel; import org.eclipse.swt.SWT; import org.eclips

CSS布局——左定宽度右自适应宽度并且等高布局

今天有位朋友一早从妙味课堂转来一个有关于CSS布局的面试题,需要解决,花了点时间写了几个DEMO,放上来与大家分享受.那么我们在看DEMO之前一起先来看看这个面试题的具体要求吧:   左侧固定宽,右侧自适应屏幕宽: 左右两列,等高布局: 左右两列要求有最小高度,例如:200px;(当内容超出200时,会自动以等高的方式增高) 要求不用JS或CSS行为实现: 仔细分析试题要求,要达到效果其实也并不是太难,只是给人感觉像有点蛋疼的问题一样.但是你仔细看后你会觉得不是那么回事: 左边固定,右边自适应布

javascript实现youku的视频代码自适应宽度

         这篇文章主要介绍了javascript实现youku的视频代码自适应宽度的方法的示例,十分的简单实用,有需要的小伙伴可以参考下.             由于是在网站编辑器里面编辑的内容,所以一直想通过CSS的方法来解决,可是找到的方式都有明显的缺陷,最终被迫采用脚本来控制列的高度,代码如下:           代码如下: <divstyle="text-align: center;"> <embedid="movie"src=

viewport布局-Extjs 隐藏左边 菜单右边 tabpanel 里面的gridpanel不自适应宽度

问题描述 Extjs 隐藏左边 菜单右边 tabpanel 里面的gridpanel不自适应宽度 如图所示: 代码如下 // 单击菜单,右边tabpanel 添加一个grid显示数据 var pl = new Ext.Panel({ id : node.attributes.id, title : node.attributes.text, border : false, // 边框 autoScroll : true, // 自动滚动条 closable : true, // 关闭选项 lay

固定右栏宽度, 左栏内容先出现同时自适应宽度的布局_经验交流

固定右栏宽度, 左栏内容先出现同时自适应宽度的布局 工作原理 #wrapper必须触发hasLayout,不然有时里面的内容会浮得怪怪的,我直接用float的,可以用其他方式.其实如果只是要做到这个例子要的效果连#wrapper都可以不要. #left定义100%宽度并利用margin:0 0 0 -200px把左边整块放在偏移入左边200px处,再利用#innerLeft的margin:0 0 0 200px再把内容撑出来, #right只是简单的浮动,#innerRight米多大作用,只是习

div三栏布局,右侧自适应宽度代码示例

div三栏布局,右侧自适应宽度代码示例以下是HTML网页特效代码,点击运行按钮可查看效果: [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]