在C#中创建一个标签数组以显示在Form1.cs上

时间:2015-11-06 03:45:08

标签: c# arrays winforms label

我想创建一个包含361个标签的数组(例如,label,label1,label2等),并将它们物理定位并显示在我的Form1.cs [Design]上。

text = "label" + 1

我在x时遇到错误。不知道为什么。谢谢你的帮助。

4 个答案:

答案 0 :(得分:0)

数组在C#中被索引为0,你的最后一次循环迭代将超过最大索引。

Label[] board = new Label[361];

这将创建一个Label数组,索引为0 - 360.只需将`for循环更改为:

for (int i = 0; i < 361; i++)

这也会修复你看到的NullReferenceException,因为数组中的第一项从未初始化

答案 1 :(得分:0)

更改for循环
        Label[] board = new Label[361];

        for (int i = 1; i < 362; i++) {
            board[i] = new Label { Name = "label" + i, Height = 55, Width = 55, MinimumSize = new Size(55, 55), Text = "label " + i };
        }

        Label[] board = new Label[361];

        for (int i = 0; i < 361; i++) {
            board[i] = new Label { Name = "label" + i, Height = 55, Width = 55, MinimumSize = new Size(55, 55), Text = "label " + i };
        }

答案 2 :(得分:0)

您的电路板阵列大小为361,因此最大值为电路板[360]

在你的for循环i&lt; 362 ..这意味着它将尝试获得董事会的价值[360

答案 3 :(得分:0)

我在循环中修改了int的值,这是你想要的吗?

        for (int i = 0; i < 361; i++)
        {
            board[i] = new Label { Name = "label" + i, Height = 55, Width = 55, MinimumSize = new Size(55, 55), Text = "label " + i };
        }

        int x = 0;
        int y = 0;

        foreach (var Label in board)
        {
            if (x >= 580)
            {
                x = 0;
                y = y + Label.Height + 55;
            }

            Label.Location = new Point(x, y);
            this.Controls.Add(Label);
            x += Label.Width;
        }