我讀過一些關於使用BackgroundWorker對象來處理執行時間密集型任務的示例,這些任務會生成用於填充DataGridView的結果。但在我的情況下,似乎填充DataGridView的行爲是花費最多的時間。我想知道是否這是因爲我需要格式化結果(隱藏某些列,檢查每行的某些標誌以設置顏色/字體等)。多線程datagridview行的格式?
例子:
DataTable results_table;
DataGridView my_grid;
DataView my_view;
private void fillTable()
{
// Generate the results
...
// Bind the data.
my_view.Table = results_table;
my_grid.DataSource = my_view
// Format the results
my_grid.Columns[0].Visible = false;
my_grid.Columns[1].Visible = false;
my_grid.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
my_grid.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
foreach (DataGridViewRow row in my_grid.Rows)
{
// Check for flags and format necessary rows.
}
}
這是去這樣做的正確的方式,或者是有一些其他的方式來格式化結果而不必通過每一行迭代?
正如Fredrik指出的那樣,使用「AutoSizeMode」屬性(特別是當它被設置爲「AllCells」時)導致了最大的延遲。所有列現在都設置爲「填充」,即使採用逐行格式(加粗,下劃線等),性能降低也不那麼重要。 – themarshal 2009-12-16 20:28:51