私はWinFormsで遊んでいて、何らかのグリッドを作成するために、たくさんのラベルを境界線で追加したいと思います。ラベルの追加は簡単です。WinFormに多くのラベルを追加する
for (int i = 0; i < 60; i++)
{
for (int j = 0; j < 60; j++)
{
var label = new Label();
label.BorderStyle = BorderStyle.FixedSingle;
label.SetBounds(i * 10, j * 10, 10, 10);
this.Controls.Add(label);
}
}
これは本当に遅いです。私はほぼ各四角形が個別に描かれているのを見ることができます。 Controlの配列を作成し、Controls.AddRange()を使用してそれらを追加するとき、同じことが起こります。
私は3600コントロールを描画しているので、いくらか遅いと想像することができますが、これを行うためのより良い方法があるとは思えません。 Control.AddRange()ステートメントを実行すると、ストップウォッチは約1600msかかると伝えます。実際の描画は少し時間がかかるようです。
これを回避し、たくさんのコントロールを使ってアプリケーションをすばやく反応させる方法はありますか?
私は実際に何らかの迷路を作り、A *を使って2点から最短経路を見つけようとしています。しかし、私はLabelクラスから派生し、OnPaintをオーバーライドすることができたと思います。どれどれ :) – fuaaark