C# でチェス戦略アプリケーションを作成しようとしています。panel1、panel2 などの名前が付けられたフォーム デザイナーにパネルを配置しました。「chessBoardPanels[0,0]」のような 2D 配列にパネルを割り当てる方法を知る必要があります。次のようなコマンドを使用して、パネルの背景を実際に制御します。
chessBoardPanels[0,0].Background=Color.Black;
しかし、ある種のオブジェクト参照が必要だと言っています。
私はむしろこのようなものに行きたいです
int numBlocks = 8;
Panel[,] chessBoardPanels = new Panel[numBlocks, numBlocks];
for (int iRow = 0; iRow < numBlocks; iRow++)
for (int iColumn = 0; iColumn < numBlocks; iColumn++)
{
Panel p = new Panel();
//set size
p.Size = new Size(50, 50);
//set back colour
p.BackColor = (iRow + (iColumn % 2)) % 2 == 0 ? Color.Black : Color.White;
//set location
p.Location = new Point(50 * iRow, 50 * iColumn);
chessBoardPanels[iRow, iColumn] = p;
this.Controls.Add(p);
}
これにより、デザイナーでパネルを作成しなくても、その場でパネルを作成できます。
ただし、間隔を処理するための式に取り組む必要があります。
編集
パネル ブロックの配置/設定方法の例も追加しました。
このような 2D 配列を作成するための構文は次のようになります。
Panel[,] chessBoardPanels = new Panel[8, 8];
chessBoardPanels[0, 0] = panel1;
chessBoardPanels[0, 1] = panel2;
chessBoardPanels[0, 2] = panel3;
//...
chessBoardPanels[0, 7] = panel8;
chessBoardPanels[1, 0] = panel9;
//...