4

DataGridView に最大 100,000 行のテーブルを表示しています。テーブルには、大きな文字列を含む列が 1 つあります。に設定AutosizeModeするAllCellsと、必要な幅の計算中にアプリケーションが長時間フリーズすることがわかりました。妥協案として、Autosize モードを DisplayedCells に設定しました。次に、メソッドを dataGrid のスクロール イベントにバインドします。

public void MethodThatBindsDataToTheDatagridview(DataTable table)
{
   dataGrid.Source = table;
   dataGrid.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
   dataGrid.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
}

public void DataGridScroll(object sender, ScrollEventArgs e)
{
   ((DataGridView)sender).Update();
}

メソッドでも同じことを試しましたRefresh。私の期待は、DataGrid が表示された行に従って列幅を設定することです。ただし、これはテーブルがロードされたときに 1 回だけ発生しますが、スクロール イベントは列幅の変更をトリガーしません。

4

2 に答える 2

5

データグリッドビューでAutoResizeColumnメソッドを呼び出すことは、あなたがする必要があることです:

 dataGrid.AutoResizeColumn(1, DataGridViewAutoSizeColumnMode.DisplayedCells);
 dataGrid.AutoResizeColumn(2, DataGridViewAutoSizeColumnMode.DisplayedCells);
于 2011-01-28T12:36:16.640 に答える
0

同じアルゴリズムを使用してすべての列のサイズを変更する必要がある場合は、メソッドAutoResizeColumns(DataGridViewAutoSizeColumnsMode autoSizeColumnsMode)を使用することもできます。そうすれば、コードは、将来追加する可能性のある列にも適用されます。

驚いたことに、オーバーロード AutoResizeColumns() は、AutoSizeMode 設定に従って各列のサイズを変更するのではなく、設定 AllCells を使用してすべての列のサイズを変更します。

于 2012-06-25T12:44:19.207 に答える