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

Why are my columns not resizing the way I want them to?

好的,下面是显示我的表单的方法:

在控制器中:

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 循环)在所有列上触发。为什么是这样?是不是因为在 我填充并调整了列的大小之后才绘制表单?

正如@terrybozzio 和我在上面的评论中都提到的那样,您应该能够通过使用重载的 AutoResizeColumns 方法来完成此操作:

View.dgv1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

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