[Winform]DataGridView列自适应宽度
引言
在做winform项目中,数据控件DataGridView的使用多多少少是会用到的,如果不设置它的属性,默认情况下是不会自适应宽度的,你想查看某项的数据,就不得不将标题栏拖来拖去,挺烦的。
方法
建一个用于测试的Person类
public class Person
{
[Description("姓名")]
public string Name { get; set; }
[Description("性别")]
public string Gender { get; set; }
[Description("地址")]
public string Address { get; set; }
}
winform绑定数据源,及自适应列宽代码
public partial class PersonInfoForm : Form
{
public PersonInfoForm()
{
InitializeComponent();
}
int width = ;
private void PersonInfoForm_Load(object sender, EventArgs e)
{
List<Person> list = new List<Person>() {
new Person(){Name="张三",Gender="男",Address="北京市 海淀区 大钟寺"},
new Person(){Name="李斯",Gender="男",Address="上海市"},
new Person(){Name="王二",Gender="女",Address="河南省 郑州市 二七广场附近"},
new Person(){Name="王二",Gender="女",Address="河南省 郑州市 "},
new Person(){Name="王二",Gender="女",Address="河南省"}
};
//绑定数据源的做法和原来相同
dgViewPersons.DataSource = list;
//对于DataGridView的每一个列都调整
for (int i = ; i < this.dgViewPersons.Columns.Count; i++)
{
//将每一列都调整为自动适应模式
this.dgViewPersons.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells);
//记录整个DataGridView的宽度
width += this.dgViewPersons.Columns[i].Width;
}
//判断调整后的宽度与原来设定的宽度的关系,如果是调整后的宽度大于原来设定的宽度,
//则将DataGridView的列自动调整模式设置为显示的列即可,
//如果是小于原来设定的宽度,将模式改为填充。
if (width > this.dgViewPersons.Size.Width)
{
this.dgViewPersons.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
}
else
{
this.dgViewPersons.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
}
//冻结某列 从左开始 0,1,2
dgViewPersons.Columns[].Frozen = true; }
}
主要用到了DataGridViewAutoSizeColumnMode枚举,也可以通过设置DataGridView的属性来实现
// 摘要:
// 定义用于指定如何调整列宽的值。
public enum DataGridViewAutoSizeColumnMode
{
// 摘要:
// 列的大小调整行为从 System.Windows.Forms.DataGridView.AutoSizeColumnsMode 属性继承。
NotSet = ,
//
// 摘要:
// 列宽不会自动调整。
None = ,
//
// 摘要:
// 调整列宽,以适合列标题单元格的内容。
ColumnHeader = ,
//
// 摘要:
// 调整列宽,以适合该列中的所有单元格的内容,不包括标题单元格。
AllCellsExceptHeader = ,
//
// 摘要:
// 调整列宽,以适合该列中的所有单元格的内容,包括标题单元格。
AllCells = ,
//
// 摘要:
// 调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,不包括标题单元格。
DisplayedCellsExceptHeader = ,
//
// 摘要:
// 调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,包括标题单元格。
DisplayedCells = ,
//
// 摘要:
// 调整列宽,使所有列的宽度正好填充控件的显示区域,只需要水平滚动保证列宽在 System.Windows.Forms.DataGridViewColumn.MinimumWidth
// 属性值以上。 相对列宽由相对 System.Windows.Forms.DataGridViewColumn.FillWeight 属性值决定。
Fill = ,
}
结果
没设置自适应列宽的

使用自适应列宽的

总结
用到的东西很简单,只是在项目中用到了,对winform使用较少,就研究上网查了一下,这样可以提高用户体验,既然用到了就记录一下,方便自己,也方便他人。
参考:
http://blog.csdn.net/ou_yangpengfei/article/details/6051701
其他网络资源
[Winform]DataGridView列自适应宽度的更多相关文章
- DataGridView列自适应宽度
来源:http://www.cnblogs.com/wolf-sun/p/3480104.html 在做winform项目中,数据控件DataGridView的使用多多少少是会用到的,如果不设置它的属 ...
- [WinForm]DataGridView列自适应
关键代码: /// <summary> /// 根据cell内容调整其宽度 /// </summary> /// <param name="girdview&q ...
- DataGridView 列自适应宽度 设置
代码: Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; 或者设置DataGridView的AutoSizeColu ...
- DataGridView列的宽度、行的高度自动调整
注意:DataGridView控件是从.NET Framework 2.0版本开始追加的. 介绍一下DataGridView列的宽度和行的高度,根据单元格或Header的内容(一般是内容全部被表示)自 ...
- 转:DataGridView列的宽度、行的高度自动调整
注意:DataGridView控件是从.NET Framework 2.0版本开始追加的. 介绍一下DataGridView列的宽度和行的高度,根据单元格或Header的内容(一般是内容全部被表示)自 ...
- [WinForm]DataGridView列头右键菜单
[WinForm]DataGridView列头右键菜单 前言 继续"不误正业" - - #,记录一下.有时候有这样的需求:DataGridView的列头菜单可以选择具体显示哪些列, ...
- Java导出Excel表,POI 实现合并单元格以及列自适应宽度(转载)
POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是: sheet.addMergedRegion(new CellRangeAddress ...
- POI 实现合并单元格以及列自适应宽度
POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是: sheet.addMergedRegion(new CellRangeAddress ...
- Winform DataGridView列的单元格中动态添加图片和文字
先上图在说,第二列中图片和文字的样式 1.需要重写DataGridViewTextBoxColumn,新建类TextAndImageColumn.cs using System; using Syst ...
随机推荐
- 职业卖家淘宝美工教程,掌握技能无师自通 学到的不只是PS(共81节)附素材【无水印版】
职业卖家淘宝美工教程,掌握技能无师自通 学到的不只是PS(共81节)附素材[无水印版]设计传说出品的专业课程是我们资深培训讲师精心录制的,只有视频教程和常用必备的插件,其他绝不掺和,如果你是职业卖家, ...
- 简单工厂模式 Simple Factory
简单工厂模式的作用就是定义一个用于创建对象的接口 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化. 先来看看它的组成: 1) 工厂类角色 ...
- 采用指数退避算法实现ajax请求的重发,全部完成时触发回调函数
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- php文件上传之多文件上传
在胡说之前,首先声明,本文是建立在掌握php单文件上传的基础上,所以这里就不赘述文件上传服务器配置,表单设置该注意的地方了. 话不多少,直入主题,在请求页面方面有两种写法(只呈现表单部分,以上传三个文 ...
- Git.Framework 框架随手记--ORM项目工程
前面已经简单介绍过了该框架(不一定是框架),本文开始重点记录其使用过程.可能记录的内容不是太详尽,框架也可能非常烂,但是里面的代码句句是实战项目所得.本文非教唆之类的文章,也非批判之类的文章,更不是炫 ...
- Object C学习笔记13-Dictionary字典
通过Array数组和Set集合的学习和理解,可以想象得到Dictionary也分为两种情况了,那就是可变和不可变两种类型的.的确如此,在Object C中提供了两个字典类,分别为NSDictionar ...
- Bootstrap2和3的区别
如果你需要兼容IE8甚至是IE7和IE6,那么只能选择Bootstrap2,虽然它自身在IE6的效果也并不完美. 但是倘若你跟随时代的脚步,并且面向的客户也很高端大气上档次地选择只需要兼容高级 ...
- jQuery使用之(二)设置元素的样式
css是页面不能分隔的部分,jQuery中也提供了一些css相关的实用的办法.前面章节中有使用过 addClass()为元素添加css样式风格.本节主要介绍jQuery如何设置页面的样式风格.包括添加 ...
- jQuery使用之(四)处理页面的表单元素
表单是一个特殊的页面元素,value的值是最受关注的,jQuery提供了强大的val()方法来处理相关的操作. 1.获取表单元素的值. 直接调用val()方法时可以获取选择器的 中的第一个元素的val ...
- Tomcat tomcat-users.xml详解
conf/tomcat-users.xml <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rol ...