引言

在做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列自适应宽度相关推荐

  1. 沫沫金:2014最新全浏览器兼容左列固定右列自适应宽度技巧大公开

    做前端的人肯定会遇到经典的左列固定,右列自适应宽度的样式效果.这种想起来很简单做起来很麻烦的事情今天你有好方案了. --不要信那些什么左侧写固定宽度,右侧不用写宽度属性和浮动属性,浏览器自动就实现右列 ...

  2. DataGridView列的宽度、行的高度自动调整

    注意:DataGridView控件是从.NET Framework 2.0版本开始追加的. 介绍一下DataGridView列的宽度和行的高度,根据单元格或Header的内容(一般是内容全部被表示)自 ...

  3. Winform DataGridView列的单元格中动态添加图片和文字

    先上图在说,第二列中图片和文字的样式 1.需要重写DataGridViewTextBoxColumn,新建类TextAndImageColumn.cs 1 using System; 2 using ...

  4. 一个三行两列右列固定左列自适应宽度的CSS

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html   PUBLIC "-/ ...

  5. 请谨慎设置WinForm控件DataGridView列的AutoSizeMode属性

    在WinForm控件DataGridView中编辑列时,请谨慎设置AutoSizeMode属性,当该属性值不为NotSet或None时,比如DataGridView显示的数据达到上万级别时,将导致严重 ...

  6. elementui表格宽度适应内容_解决elementui表格操作列自适应列宽代码示例

    本篇文章小编给大家分享一下解决elementui表格操作列自适应列宽代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 写死宽度时是这样的: 开始 ...

  7. jGrid表格,用shrinkToFit属性设置列的宽度为不自适应表格宽度

    jGrid表格里,通常列的宽度会自适应的填充至整个表格,一般当字段多的时候倒没什么关系.但如果表内只有两三个字段,列的宽度自适应表的宽度后,看起来就很别扭. $("#meterTypeGri ...

  8. elementui表格宽度适应内容_解决elementui表格操作列自适应列宽

    业务需要前端根据用户权限动态显示对应按钮,直接把操作列的列宽写死的话,在按钮少的情况下不是那么好看,所以想到了一个骚操作... 写死宽度时是这样的: 开始 给操作列绑定宽度属性 :width=&quo ...

  9. C# winform DataGridView 常见属性

    C# winform DataGridView 常见属性 C# winform DataGridView 属性说明 ① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判 ...

最新文章

  1. Cannot resolve method 'getParameter( )'
  2. yolo 识别 狗狗自行车
  3. Direct2D (11) : 画刷之 ID2D1LinearGradientBrush
  4. Spring注解@Import详细使用说明
  5. 力扣:7整数反转(python)
  6. Hive SQL子句中 group by 1 是什么意思?
  7. 让 jQuery UI draggable 适配移动端
  8. 字符串拼接在Oracle和mysql中的用法
  9. 消费者启动,允许期间报task supervisor timed out 异常,解决
  10. .ps是什么格式_用Word修图,真的比PS简单十倍不止!可惜知道的人太少了......
  11. css3做的好看的小便签,纯CSS3 便签条折角效果
  12. link标签的real属性理解
  13. umeditor1.2.2 jsp版本更改图片上传路径的方法
  14. opengl介绍 webGL Open Inventor、Cosmo3D、Optimizer 3DLabs
  15. C/C++框架和第三方库
  16. progisp下载错误-error:could not find USBASP device
  17. NBUT 1225 NEW RDSP MODE I
  18. Python中安装GDAL
  19. 证明题 (转自和菜头)
  20. meego linux版本,记MeeGo的多系统启动

热门文章

  1. Python3的unittest用例按编写顺序执行
  2. 100. Same Tree同样的树
  3. CASE WHEN 高阶用法?
  4. tableau join 与格式问题
  5. 【Python】学习笔记五:缩进与选择
  6. Android之使用Android-AQuery异步加载图片(一)
  7. hdu2059:龟兔赛跑
  8. 返回、取消与关闭的使用逻辑
  9. 什么是7层负载均衡?
  10. CF17E:Palisection——题解