2011-01-28 38 views
4

我在DataGridView中顯示一個表格,最多有100,000行。該表有一列包含大字符串。我發現將AutosizeMode設置爲'AllCells'會導致應用程序在計算所需寬度時凍結很長時間。 作爲一種折衷方案,我將Autosize模式設置爲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(); 
} 

我也試圖與刷新方法相同。我的期望是,DataGrid將根據顯示的行設置列寬。但是,這隻會在表格加載時發生,但滾動事件不會觸發列寬度的更改。

回答

5

呼籲DataGridView中​​方法是你需要做什麼:

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

問題解決。謝謝。 – Yoav 2011-01-28 16:52:34

0

你也可以使用的方法AutoResizeColumns(DataGridViewAutoSizeColumnsMode autoSizeColumnsMode),前提是所有的列應該使用相同的算法來調整。這樣,您的代碼也適用於將來可能添加的任何列。令人驚訝的是,重載AutoResizeColumns()將使用設置AllCells調整所有列的大小,而不是根據其AutoSizeMode設置調整每列的大小。