如何在c#中从数据源填充dataGridView后调整列的大小?
本文关键字:调整 dataGridView 填充 数据源 | 更新日期: 2023-09-27 18:11:31
我不能让这个工作。下面是我的一部分代码,给你一些想法。
Scout ScoutInstance = new Scout();
String sql;
DataTable table;
sql = "select * from FD_GROUP";
table = ScoutInstance.getTableValues(sql);
dataGridView1.DataSource = table;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.AutoResizeColumns();
int width = 0;
foreach (DataGridViewColumn column in dataGridView1.Columns)
if (column.Visible == true)
{
width += column.Width;
Console.WriteLine("{0}", column.Width);
}
Console.WriteLine("{0}", width);
我得到的输出告诉我两个列的宽度相等(100),但是程序本身显示不同宽度的列。
您可以尝试这样做....
private void setdatagridviewcolumnwidth()
{
datagridview1.columns[0].width = 100;
datagridview1.columns[1].width =100;
}
,然后把这个函数放在绑定datasource的datagridview之后(即
)table = ScoutInstance.getTableValues(sql);
dataGridView1.DataSource = table;
setdatagridviewcolumnwidth() //here you will call set widths method
您应该更新Grid Layout以显示正确的值。它不会在你离开你的sub之前更新,否则,因为Layout更新是排队的。所以使用:
dataGridView1.UpdateLayout()
在autoresizecolcolumns之后,你会得到你的值
关于更新布局:
http://msdn.microsoft.com/en-us/library/system.windows.uielement.updatelayout.aspx"确保此元素的所有可视子元素都正确地更新了布局。"
"所有计算大小将被验证。"
"你应该只在你绝对需要更新尺寸和位置时调用UpdateLayout "…