c# - 尝试在 c# 中为电路板创建数组中的图片框网格

标签 c# multidimensional-array picturebox

我正在尝试使用数组中的图片框为 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/

相关文章:

c - 奇怪的数组字符串输出

c++ - 使用goto语句时,代码不会在循环内的期望位置输出

C# 随机并一张一张地显示图片

c# - 在 C# 中更快地反转图像

C# - 检测 PictureBox 重叠

c# - json.net 反序列化 - 如何为图中的子对象指定转换器?

c# - 无法在 Windows 10 上安装 dotnet-ef 工具

ruby-on-rails - 排序多维数组,降序

c# - 索引超出数组范围 C#

c# - 在 ASP.NET Web API2 webservice 中实现 OAuth 访问 token