[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 ...
随机推荐
- JS insertAdajcentHTML 方法简介
修改节点的内容除了常用的innerHTML和innerText之外,还有insertAdjacentHTML和insertAdjacentText方法,可以在指定的地方插入内容.insertAdjac ...
- 20145208 《Java程序设计》第7周学习总结
20145208 <Java程序设计>第7周学习总结 教材学习内容总结 Lambda 认识Lambda语法 什么是Lambda语法 以下是维基百科上的解释: a function (or ...
- [C语言]一个很实用的服务端和客户端进行TCP通信的实例
本文给出一个很实用的服务端和客户端进行TCP通信的小例子.具体实现上非常简单,只是平时编写类似程序,具体步骤经常忘记,还要总是查,暂且将其记下来,方便以后参考. (1)客户端程序,编写一个文件clie ...
- 开源搜索引擎Iveely 0.7.0发布,不一样,那就让他不一样!
2012年08月05日,Iveely Search Engine 0.1.0发布,今天,怀着对于未来的追求,终于,0.7.0如期和大家见面了,7个版本,历时2年4个月,感谢大家的支持,感谢我不离不弃的 ...
- Android图片浏览器之缩略图
项目源码:http://files.cnblogs.com/files/tgyf/app.rar. 最近在自学Android,尝试实现一般手机上都存在的图片浏览器,从缩略图开始. 直接上图,这是goo ...
- 怎样将SQL Azure数据库备份到本地或者Storage
怎样备份SQL Azure数据库到本地或者云存储Storage,可以使用SQL Database Import Export 的功能. 具体操作如下: 用SSMS链接SQL Azure数据库 注意:服 ...
- MySQL性能分析
第一步 检查系统的状态 通过操作系统的一些工具检查系统的状态,比如CPU.内存.交换.磁盘的利用率,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲,这也可能不是一个正常的状态,因为cp ...
- Ibatis中传List参数
Ibatis中用list传参数的方式. Java代码 select count(id) from `user` where id in #[]# and status=1 . <select ...
- iOS开发小技巧--利用苹果官方API播放视频(方法已经过时,了解一下)
- codevs 1690 开关灯 线段树水题
没什么好说的,标记put表示开关是否开着. #include<cstdio> #include<cstring> #include<algorithm> using ...