私はC#でWinFormsアプリケーションを開発中です。私は当初、テーブルレイアウトパネルを持っていて、各セルごとに1つずつ、動的に作成されたボタンを設定していました。これはうまく動作し、非常に高速です。プログラムの実行中に、このテーブルレイアウトパネルをクリアして、同じディスプレイでかなり再表示する必要がありますが、最初のテーブルの2倍の数のボタンが必要です。問題は、このプロセスには(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
は、私はそれについて2 int's
、何も特別な追加したためにButton
から派生したクラスです。また、ボタンがテーブルに正しく追加されます。ありがとう!
'GetNoOfLines()'は何を行い、それを何度も何度も呼び出す必要がありますか? –
intを返す関数です。私は問題はその中にあるとは考えていませんが、テーブル作成の中にあります。 –
そうかもしれません。しかし、GetNoOfLines()がループ全体で同じままであれば、結果はコストを削減する代わりに変数に格納する必要があります。 –