[Winform]DataGridView列自适应宽度
引言
在做winform项目中,数据控件DataGridView的使用多多少少是会用到的,如果不设置它的属性,默认情况下是不会自适应宽度的,你想查看某项的数据,就不得不将标题栏拖来拖去,挺烦的。
方法
建一个用于测试的Person类
1 public class Person 2 { 3 [Description("姓名")] 4 public string Name { get; set; } 5 [Description("性别")] 6 public string Gender { get; set; } 7 [Description("地址")] 8 public string Address { get; set; } 9 }
winform绑定数据源,及自适应列宽代码
1 public partial class PersonInfoForm : Form 2 { 3 public PersonInfoForm() 4 { 5 InitializeComponent(); 6 } 7 int width = 0; 8 private void PersonInfoForm_Load(object sender, EventArgs e) 9 { 10 List<Person> list = new List<Person>() { 11 new Person(){Name="张三",Gender="男",Address="北京市 海淀区 大钟寺"}, 12 new Person(){Name="李斯",Gender="男",Address="上海市"}, 13 new Person(){Name="王二",Gender="女",Address="河南省 郑州市 二七广场附近"}, 14 new Person(){Name="王二",Gender="女",Address="河南省 郑州市 "}, 15 new Person(){Name="王二",Gender="女",Address="河南省"} 16 }; 17 //绑定数据源的做法和原来相同 18 dgViewPersons.DataSource = list; 19 //对于DataGridView的每一个列都调整 20 for (int i = 0; i < this.dgViewPersons.Columns.Count; i++) 21 { 22 //将每一列都调整为自动适应模式 23 this.dgViewPersons.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells); 24 //记录整个DataGridView的宽度 25 width += this.dgViewPersons.Columns[i].Width; 26 } 27 //判断调整后的宽度与原来设定的宽度的关系,如果是调整后的宽度大于原来设定的宽度, 28 //则将DataGridView的列自动调整模式设置为显示的列即可, 29 //如果是小于原来设定的宽度,将模式改为填充。 30 if (width > this.dgViewPersons.Size.Width) 31 { 32 this.dgViewPersons.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; 33 } 34 else 35 { 36 this.dgViewPersons.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 37 } 38 //冻结某列 从左开始 0,1,2 39 dgViewPersons.Columns[1].Frozen = true; 40 41 } 42 }
主要用到了DataGridViewAutoSizeColumnMode枚举,也可以通过设置DataGridView的属性来实现
1 // 摘要: 2 // 定义用于指定如何调整列宽的值。 3 public enum DataGridViewAutoSizeColumnMode 4 { 5 // 摘要: 6 // 列的大小调整行为从 System.Windows.Forms.DataGridView.AutoSizeColumnsMode 属性继承。 7 NotSet = 0, 8 // 9 // 摘要: 10 // 列宽不会自动调整。 11 None = 1, 12 // 13 // 摘要: 14 // 调整列宽,以适合列标题单元格的内容。 15 ColumnHeader = 2, 16 // 17 // 摘要: 18 // 调整列宽,以适合该列中的所有单元格的内容,不包括标题单元格。 19 AllCellsExceptHeader = 4, 20 // 21 // 摘要: 22 // 调整列宽,以适合该列中的所有单元格的内容,包括标题单元格。 23 AllCells = 6, 24 // 25 // 摘要: 26 // 调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,不包括标题单元格。 27 DisplayedCellsExceptHeader = 8, 28 // 29 // 摘要: 30 // 调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,包括标题单元格。 31 DisplayedCells = 10, 32 // 33 // 摘要: 34 // 调整列宽,使所有列的宽度正好填充控件的显示区域,只需要水平滚动保证列宽在 System.Windows.Forms.DataGridViewColumn.MinimumWidth 35 // 属性值以上。 相对列宽由相对 System.Windows.Forms.DataGridViewColumn.FillWeight 属性值决定。 36 Fill = 16, 37 }
结果
没设置自适应列宽的
使用自适应列宽的
总结
用到的东西很简单,只是在项目中用到了,对winform使用较少,就研究上网查了一下,这样可以提高用户体验,既然用到了就记录一下,方便自己,也方便他人。
参考:
http://blog.csdn.net/ou_yangpengfei/article/details/6051701
其他网络资源
[Winform]DataGridView列自适应宽度相关推荐
- 沫沫金:2014最新全浏览器兼容左列固定右列自适应宽度技巧大公开
做前端的人肯定会遇到经典的左列固定,右列自适应宽度的样式效果.这种想起来很简单做起来很麻烦的事情今天你有好方案了. --不要信那些什么左侧写固定宽度,右侧不用写宽度属性和浮动属性,浏览器自动就实现右列 ...
- DataGridView列的宽度、行的高度自动调整
注意:DataGridView控件是从.NET Framework 2.0版本开始追加的. 介绍一下DataGridView列的宽度和行的高度,根据单元格或Header的内容(一般是内容全部被表示)自 ...
- Winform DataGridView列的单元格中动态添加图片和文字
先上图在说,第二列中图片和文字的样式 1.需要重写DataGridViewTextBoxColumn,新建类TextAndImageColumn.cs 1 using System; 2 using ...
- 一个三行两列右列固定左列自适应宽度的CSS
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-/ ...
- 请谨慎设置WinForm控件DataGridView列的AutoSizeMode属性
在WinForm控件DataGridView中编辑列时,请谨慎设置AutoSizeMode属性,当该属性值不为NotSet或None时,比如DataGridView显示的数据达到上万级别时,将导致严重 ...
- elementui表格宽度适应内容_解决elementui表格操作列自适应列宽代码示例
本篇文章小编给大家分享一下解决elementui表格操作列自适应列宽代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 写死宽度时是这样的: 开始 ...
- jGrid表格,用shrinkToFit属性设置列的宽度为不自适应表格宽度
jGrid表格里,通常列的宽度会自适应的填充至整个表格,一般当字段多的时候倒没什么关系.但如果表内只有两三个字段,列的宽度自适应表的宽度后,看起来就很别扭. $("#meterTypeGri ...
- elementui表格宽度适应内容_解决elementui表格操作列自适应列宽
业务需要前端根据用户权限动态显示对应按钮,直接把操作列的列宽写死的话,在按钮少的情况下不是那么好看,所以想到了一个骚操作... 写死宽度时是这样的: 开始 给操作列绑定宽度属性 :width=&quo ...
- C# winform DataGridView 常见属性
C# winform DataGridView 常见属性 C# winform DataGridView 属性说明 ① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判 ...
最新文章
- Cannot resolve method 'getParameter( )'
- yolo 识别 狗狗自行车
- Direct2D (11) : 画刷之 ID2D1LinearGradientBrush
- Spring注解@Import详细使用说明
- 力扣:7整数反转(python)
- Hive SQL子句中 group by 1 是什么意思?
- 让 jQuery UI draggable 适配移动端
- 字符串拼接在Oracle和mysql中的用法
- 消费者启动,允许期间报task supervisor timed out 异常,解决
- .ps是什么格式_用Word修图,真的比PS简单十倍不止!可惜知道的人太少了......
- css3做的好看的小便签,纯CSS3 便签条折角效果
- link标签的real属性理解
- umeditor1.2.2 jsp版本更改图片上传路径的方法
- opengl介绍 webGL Open Inventor、Cosmo3D、Optimizer 3DLabs
- C/C++框架和第三方库
- progisp下载错误-error:could not find USBASP device
- NBUT 1225 NEW RDSP MODE I
- Python中安装GDAL
- 证明题 (转自和菜头)
- meego linux版本,记MeeGo的多系统启动