为什么我的专栏没有按照我希望的方式调整大小?

时间:2015-03-23 22:30:04

标签: c# winforms datagridview

好的,所以这是显示我的表单的方法:

在控制器中:

public void ShowView()
{
    Form1 View = new Form1();
    PopulateView();
    View.Show();
}

public static PopulateView(Form1 View)
{
    //get data to populate DataGridView....

    // AutoResizeColumns should resize columns, based on the content of the cells
    View.dgv1.AutoResizeColumns();

    // This method should resize any columns that aren't bigger than 100 (resized by AutoResizeColumns) to fit the column header instead.
    var columns = View.dgv1.Columns;

    foreach (DataGridViewColumns clm in columns)
    {
        if (clm.Width <= 100)
        {
            clm.AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader;
        }
    }
}

然而,他们当中都没有按照自己的意愿工作。 AutoResizeColumns并未调整任何列的大小,因为第二种方法(foreach循环)会在所有列上触发。为什么是这样?是因为在我已经填充并调整了列的大小后,正在绘制表单吗?

1 个答案:

答案 0 :(得分:0)

正如@terrybozzio和我在上面的评论中提到的那样,你应该能够通过使用重载的AutoResizeColumns方法来实现这一点:

View.dgv1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

这也应该允许您删除foreach循环,从而简化您的方法。