好的,所以这是显示我的表单的方法:
在控制器中:
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
循环)会在所有列上触发。为什么是这样?是因为在我已经填充并调整了列的大小后,正在绘制表单吗?
答案 0 :(得分:0)
正如@terrybozzio和我在上面的评论中提到的那样,你应该能够通过使用重载的AutoResizeColumns
方法来实现这一点:
View.dgv1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
这也应该允许您删除foreach
循环,从而简化您的方法。