博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Winform]DataGridView列自适应宽度
阅读量:6419 次
发布时间:2019-06-23

本文共 3492 字,大约阅读时间需要 11 分钟。

引言

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

方法

建一个用于测试的Person类

1     public class Person2     {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
list = new List
() { 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 else35 {36 this.dgViewPersons.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;37 }38 //冻结某列 从左开始 0,1,239 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.MinimumWidth35         //     属性值以上。 相对列宽由相对 System.Windows.Forms.DataGridViewColumn.FillWeight 属性值决定。36         Fill = 16,37     }

结果

没设置自适应列宽的

使用自适应列宽的

总结

用到的东西很简单,只是在项目中用到了,对winform使用较少,就研究上网查了一下,这样可以提高用户体验,既然用到了就记录一下,方便自己,也方便他人。

参考:

其他网络资源

 

转载于:https://www.cnblogs.com/wolf-sun/p/3480104.html

你可能感兴趣的文章
大型机、小型机、x86服务器的区别
查看>>
J2EE十三个规范小结
查看>>
算法(第四版)C#题解——2.1
查看>>
网关支付、银联代扣通道、快捷支付、银行卡支付分别是怎么样进行支付的?...
查看>>
大数据开发实战:Stream SQL实时开发一
查看>>
C++返回引用的函数例程
查看>>
dll 问题 (转)
查看>>
使用sql生成UUID
查看>>
mysql日期函数(转)
查看>>
REST API用得也痛苦
查看>>
test for windows live writer plugins
查看>>
Tiny210 U-BOOT(二)----配置时钟频率基本原理
查看>>
读javascript高级程序设计14-错误处理与调试
查看>>
代理模式
查看>>
javaweb学习总结(二十四)——jsp传统标签开发
查看>>
让script的type属性等于text/html
查看>>
[Docker] Docker Machine intro
查看>>
HA 高可用软件系统保养指南
查看>>
linux 文件系统sysvinit 流程分析
查看>>
体素科技:2018年,算法驱动下的医学影像分析进展
查看>>