Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataGridView在显示之前不会自动调整列大小_C#_.net_Winforms_Datagridview - Fatal编程技术网

C# DataGridView在显示之前不会自动调整列大小

C# DataGridView在显示之前不会自动调整列大小,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,我有一个自定义控件,它在单击按钮时显示DataGridView弹出窗口。我想将弹出窗口调整为DataGridView列的大小。我已经在创建DataGridView时设置了自动调整大小模式 dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 在计算总列

我有一个自定义控件,它在单击按钮时显示DataGridView弹出窗口。我想将弹出窗口调整为DataGridView列的大小。我已经在创建DataGridView时设置了自动调整大小模式

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;
}