2011-01-28 4 views
4

DataGridViewに最大100,000行のテーブルを表示しています。テーブルには大きな文字列を含む1つの列があります。 AutosizeModeを 'AllCells'に設定すると、アプリケーションが必要な幅を計算している間に、アプリケーションが長時間フリーズしてしまうことがわかりました。 妥協点として、自動サイズ調整モードをDisplayedCellsに設定しました。 私は、DataGridのスクロールイベントにメソッドをバインド:C#DataGridView AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells

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

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

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

dataGrid.AutoResizeColumn(1, DataGridViewAutoSizeColumnMode.DisplayedCells); 
dataGrid.AutoResizeColumn(2, DataGridViewAutoSizeColumnMode.DisplayedCells); 

答えて

5

あなたが何をする必要があるかです。このようにして、コードは将来追加する列にも適用されます。

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

+0

問題を解決しました。ありがとう。 – Yoav