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 回だけ発生しますが、スクロール イベントは列幅の変更をトリガーしません。