C# DataGridView在显示之前不会自动调整列大小
我有一个自定义控件,它在单击按钮时显示DataGridView弹出窗口。我想将弹出窗口调整为DataGridView列的大小。我已经在创建DataGridView时设置了自动调整大小模式C# DataGridView在显示之前不会自动调整列大小,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,我有一个自定义控件,它在单击按钮时显示DataGridView弹出窗口。我想将弹出窗口调整为DataGridView列的大小。我已经在创建DataGridView时设置了自动调整大小模式 dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 在计算总列
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
在计算总列大小之前,我还调用了以下方法
public void AutoResize()
{
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);
dataGridView1.Refresh();
}
第一次显示弹出窗口时,其大小未正确调整。据我所知,这是因为在dataGridView控件显示一次之前,不会自动调整列的大小
这是执行的顺序
CreateCustomControl->CreateDataGridView with data->AddToCustomControl->CallAutoResize->ShowCustomControl with DataGridView
一个简单的解决方案是在控件显示后调整其大小。我仍然想知道为什么在显示控件之前自动调整大小不会发生
感谢您的帮助。此解决方案适合您吗
dataGridView1.DataSource = your DataSource would be assigned here;
dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
for ( int i = 0; i < dataGridView1.Columns.Count; i++ )
{
int colw = grd.Columns[i].Width;
dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
dataGridView1.Columns[i].Width = colw;
}
这个解决方案对你有用吗
dataGridView1.DataSource = your DataSource would be assigned here;
dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
for ( int i = 0; i < dataGridView1.Columns.Count; i++ )
{
int colw = grd.Columns[i].Width;
dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
dataGridView1.Columns[i].Width = colw;
}