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

C# 为什么我的列没有按我希望的方式调整大小?,c#,winforms,datagridview,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 column

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

在控制器中:

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;
        }
    }
}
public void ShowView()
{
Form1视图=新Form1();
PopulateView();
View.Show();
}
公共静态PopulateView(Form1视图)
{
//获取数据以填充DataGridView。。。。
//AutoResizeColumns应根据单元格的内容调整列的大小
View.dgv1.AutoResizeColumns();
//此方法应调整任何不大于100的列的大小(通过AutoResizeColumns调整大小),以适应列标题。
var columns=View.dgv1.columns;
foreach(DataGridViewColumns clm列)
{

如果(clm.WidthAs@terrybozzio和我在上面的评论中都提到过,那么您应该能够通过使用重载的
AutoResizeColumns
方法来实现这一点:

View.dgv1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

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

尝试移动
View.dgv1.AutoResizeColumns();
到方法的底部,看看这是否有帮助。我不知道怎么做。即使我删除
foreach
循环,它仍然不会调整列的大小。如果在
foreach
之后移动它,那么列将有一个
AutoSizeMode
。我不确定默认情况下它是什么…如果它默认为
ColumnHeader
,这样就不需要循环了。或者,您可以将
AllCells
作为参数传递给
AutoResizeColumns()
并一起删除
foreach
。请参阅MSDN:您可以使用DataGridViewAutoSizeColumnsMode参数尝试重载的AutoResizeColumns方法。是的,
AutoSizeColumnsMode
方法使
foreach
冗余。谢谢!