1、实现代码
private void AutoResize_dgv(DataGridView dgv )
{
int width=0;
//对于DataGridView的每一个列都调整
for (int i = 0; i < dgv.Columns.Count; i++)
{
//将每一列都调整为自动适应模式
dgv.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells);
//记录整个DataGridView的宽度
width += dgv.Columns[i].Width;
}
//判断调整后的宽度与原来设定的宽度的关系,如果是调整后的宽度大于原来设定的宽度,
//则将DataGridView的列自动调整模式设置为显示的列即可,
//如果是小于原来设定的宽度,将模式改为填充。
if (width > dgv.Size.Width)
{
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
}
else
{
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
}
//冻结某列 从左开始 0,1,2
dgv.Columns[1].Frozen = true;
//标题居中
dgv.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
//内容居中
dgv.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
}
2、DataGridViewAutoSizeColumnMode枚举
主要用到了DataGridViewAutoSizeColumnMode枚举,也可以通过设置DataGridView的属性来实现
// 摘要:
// 定义用于指定如何调整列宽的值。
public enum DataGridViewAutoSizeColumnMode
{
// 摘要:
// 列的大小调整行为从 System.Windows.Forms.DataGridView.AutoSizeColumnsMode 属性继承。
NotSet = 0,
//
// 摘要:
// 列宽不会自动调整。
None = 1,
//
// 摘要:
// 调整列宽,以适合列标题单元格的内容。
ColumnHeader = 2,
//
// 摘要:
// 调整列宽,以适合该列中的所有单元格的内容,不包括标题单元格。
AllCellsExceptHeader = 4,
//
// 摘要:
// 调整列宽,以适合该列中的所有单元格的内容,包括标题单元格。
AllCells = 6,
//
// 摘要:
// 调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,不包括标题单元格。
DisplayedCellsExceptHeader = 8,
//
// 摘要:
// 调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,包括标题单元格。
DisplayedCells = 10,
//
// 摘要:
// 调整列宽,使所有列的宽度正好填充控件的显示区域,只需要水平滚动保证列宽在 System.Windows.Forms.DataGridViewColumn.MinimumWidth
// 属性值以上。 相对列宽由相对 System.Windows.Forms.DataGridViewColumn.FillWeight 属性值决定。
Fill = 16,
}
3、数据绑定方法
建一个用于测试的Person类
public class Person
{
[Description("姓名")]
public string Name { get; set; }
[Description("性别")]
public string Gender { get; set; }
[Description("地址")]
public string Address { get; set; }
}
winform绑定数据源
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="河南省"}
};
//绑定数据源的做法和原来相同
dgv.DataSource = list;
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
我的知识库
本文地址: Winform 中 DataGridView设置自适应列宽、标题内容居中
本文地址: Winform 中 DataGridView设置自适应列宽、标题内容居中