如何在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),但是程序本身显示不同宽度的列。

如何在c#中从数据源填充dataGridView后调整列的大小?

您可以尝试这样做....

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 "…