我正在尝试使用数组中的图片框为 Naughts and crosses (tic tac toe) 游戏制作棋盘,而我想出的是这个。这在我按下按钮时开始。
for (int i = 0; i <= 3; i++)
{
for (int j = 0; j <= 3; j++)
{
PictureBox[,] pb = new PictureBox[i, j];
pb[i, j].Location = new Point(i * 150 + 100, j * 150 + 100);
pb[i, j].Width = 150;
pb[i, j].Height = 150;
pb[i, j].Visible = true;
pb[i, j].BorderStyle = BorderStyle.FixedSingle;
pb[i, j].BringToFront();
this.Controls.Add(pb[i, j]);
}
}
这会抛出一个“System.IndexOutOfRangeException”异常
pb[i, j].Location = new Point(i * 150 + 100, j * 150 + 100);
这里有什么问题吗?
最佳答案
您离得不远了 - 您需要在循环外声明数组,并在每次迭代时创建一张图片 - 这可行(已测试):
PictureBox[,] pb = new PictureBox[3, 3];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
pb[i,j] = new PictureBox();
pb[i, j].Location = new Point(i * 150 + 100, j * 150 + 100);
pb[i, j].Width = 150;
pb[i, j].Height = 150;
pb[i, j].Visible = true;
pb[i, j].BorderStyle = BorderStyle.FixedSingle;
pb[i, j].BringToFront();
this.Controls.Add(pb[i, j]);
}
}
(注意循环中的逻辑也是错误的,它应该是 < 3 而不是 <= 3 因为你从 0 开始)
关于c# - 尝试在 c# 中为电路板创建数组中的图片框网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22093731/