在 C# 中创建标签数组以显示在 Form1.cs
Create an array of labels in C# to show up on Form1.cs
我想创建一个包含 361 个标签(即 label、label1、label2 等)的数组,并将它们放置在物理位置并显示在我的 Form1.cs [Design] 上。
public Form1()
{
InitializeComponent();
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 };
}
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;
}
}
text = "label" + 1
出现错误。不知道为什么。感谢您的帮助。
数组在 C# 中是从 0 开始索引的,您的最后一次循环迭代将超过最大索引。
Label[] board = new Label[361];
这将创建一个索引为 0 - 360 的 Label
数组。只需将您的 `for 循环更改为:
for (int i = 0; i < 361; i++)
这也将修复您的 NullReferenceException
,因为数组中的第一项从未初始化
从
更改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 };
}
你的 board 数组大小为 361,所以最大为 board[360]
在你的 for 循环中 i<362.. 这意味着它将尝试获取 board[360
的值
我在循环中修改了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;
}
我想创建一个包含 361 个标签(即 label、label1、label2 等)的数组,并将它们放置在物理位置并显示在我的 Form1.cs [Design] 上。
public Form1()
{
InitializeComponent();
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 };
}
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;
}
}
text = "label" + 1
出现错误。不知道为什么。感谢您的帮助。
数组在 C# 中是从 0 开始索引的,您的最后一次循环迭代将超过最大索引。
Label[] board = new Label[361];
这将创建一个索引为 0 - 360 的 Label
数组。只需将您的 `for 循环更改为:
for (int i = 0; i < 361; i++)
这也将修复您的 NullReferenceException
,因为数组中的第一项从未初始化
从
更改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 };
}
你的 board 数组大小为 361,所以最大为 board[360]
在你的 for 循环中 i<362.. 这意味着它将尝试获取 board[360
的值我在循环中修改了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;
}