2

ボタンがクリックされたときにEssentialがDataGridViewポップアップを表示するカスタムコントロールがあります。ポップアップのサイズをDataGridView列のサイズに変更したいと思います。DataGridViewの作成時にAutoSizeモードを設定しました。

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

また、合計列サイズを計算する直前に、次のメソッドを呼び出します。

public void AutoResize()
{
    dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
    dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);
    dataGridView1.Refresh();
}

ポップアップが最初に表示されたとき、サイズが適切に変更されていません。これは、私が知る限り、dataGridViewコントロールが一度表示されるまで列のAutoSizeが実行されないためです。

これが実行の順序です。

CreateCustomControl-> CreateDataGridView(データ付き)-> AddToCustomControl-> CallAutoResize-> ShowCustomControl(DataGridView付き)

簡単な解決策は、表示後にコントロールのサイズを変更することです。コントロールが表示されるまでAutoResizeが実行されない理由を知りたいのですが。

よろしくお願いします。

4

1 に答える 1

0

このソリューションはあなたのために働くでしょうか

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;
}
于 2012-08-15T22:35:57.557 に答える