我的工作在C#中的WinForms應用程序。我最初有一個表佈局面板,我用動態創建的按鈕填充,每個單元格一個。這很好,而且速度很快。在程序執行時,我必須清除此表佈局面板和重新填充它,幾乎有相同顯示,但是多個按鈕(兩倍於從最初的表數目)。問題是這個過程需要很多時間(超過10秒)。難道我做錯了什麼?這是代碼:動態創建表佈局面板的時間太長
buttonTable.Controls.Clear();
buttonTable.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
buttonTable.RowCount = GetNoOfLines();
buttonTable.ColumnCount = GetNoOfLines();
for (int z = 1; z <= GetNoOfLines(); z++)
{
buttonTable.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 25));
buttonTable.RowStyles.Add(new RowStyle(SizeType.Absolute, 25));
}
for (int i = 1; i <= GetNoOfLines(); i++)
{
for (int j = 1; j <= GetNoOfLines(); j++)
{
FieldButton tempButton = new FieldButton(i, j, GetNoOfLines());
tempButton.MouseDown += new MouseEventHandler(OnFieldButtonClicked);
buttonTable.Controls.Add(tempButton, j - 1, i - 1);
}
}
注:FieldButton
是Button
派生的類,而我已經添加了兩個int's
,什麼特別的地方。此外,這些按鈕被正確添加到表格中。謝謝!
'GetNoOfLines()'做了什麼,是否有必要反覆調用它? –
這是一個返回int的函數。我認爲這個問題不在其中,但在表格創建中。 –
也許如此。但是,如果GetNoOfLines()保持整個迴路相同,那麼結果應該被存儲在一個變量,而不是降低成本。 –