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
冗余。谢谢!