在c#中绘制标签数组
Drawing a label array in c#
对于我的项目,我需要创建类似于网格的可点击图块。为此,我决定尝试使用一组标签,单击其中任何一个都会导致与单击的标签相对应的鼠标单击事件。我不想使用 Visual Studio 拖放标签来绘制我需要的 220,所以我决定创建一个标签数组。这是我用来测试标签数组的使用的代码:
Label[] Tiles = new Label[10];
for (int i = 0; i != 10; i++)
{
for (int n = 0; n != 22; n++)
{
Tiles[i] = new Label();
Tiles[i].Size = new Size(62, 62);
Tiles[i].Location = new System.Drawing.Point(n * 62 + 118, 106 + i * 62);
Tiles[i].Text = (i+n).ToString();
Tiles[i].Name = (i + n).ToString();
Tiles[i].AutoSize = true;
Tiles[i].Click += new System.EventHandler(this.label1_Click);
}
}
我在 Form1_Load
方法中使用此代码,但问题是它不会抛出错误,但实际上也不会获取表单上的标签,它只是初始化标签但不会绘制它们,有人知道如何将它们实际添加到表单中吗?
您必须将该标签添加到表单中。比如,将一个 groupbox 放在您的表单中并将其命名为 group1。
现在将标签添加到该组。
group1.Controls.Add(瓷砖[i]);
这真的很容易做到!
在最里面的 for 循环中,添加以下行:
this.Controls.Add(Tiles[i]);
它首先获取窗体上的所有控件,然后在其中添加标签!
但是,我建议您将标签添加到 Panel
,只是因为您正在创建网格,所以您可能应该使用 Panel
.[= 将标签分组在一起。 15=]
在设计器中创建一个面板,将其命名为 labelPanel
或其他名称,然后在最内层的 for 循环中调用此方法:
this.labelPanel.Controls.Add(Tiles[i]);
请注意,由于标签的位置现在是相对于面板的,您需要再次调整它们。
对于我的项目,我需要创建类似于网格的可点击图块。为此,我决定尝试使用一组标签,单击其中任何一个都会导致与单击的标签相对应的鼠标单击事件。我不想使用 Visual Studio 拖放标签来绘制我需要的 220,所以我决定创建一个标签数组。这是我用来测试标签数组的使用的代码:
Label[] Tiles = new Label[10];
for (int i = 0; i != 10; i++)
{
for (int n = 0; n != 22; n++)
{
Tiles[i] = new Label();
Tiles[i].Size = new Size(62, 62);
Tiles[i].Location = new System.Drawing.Point(n * 62 + 118, 106 + i * 62);
Tiles[i].Text = (i+n).ToString();
Tiles[i].Name = (i + n).ToString();
Tiles[i].AutoSize = true;
Tiles[i].Click += new System.EventHandler(this.label1_Click);
}
}
我在 Form1_Load
方法中使用此代码,但问题是它不会抛出错误,但实际上也不会获取表单上的标签,它只是初始化标签但不会绘制它们,有人知道如何将它们实际添加到表单中吗?
您必须将该标签添加到表单中。比如,将一个 groupbox 放在您的表单中并将其命名为 group1。 现在将标签添加到该组。 group1.Controls.Add(瓷砖[i]);
这真的很容易做到!
在最里面的 for 循环中,添加以下行:
this.Controls.Add(Tiles[i]);
它首先获取窗体上的所有控件,然后在其中添加标签!
但是,我建议您将标签添加到 Panel
,只是因为您正在创建网格,所以您可能应该使用 Panel
.[= 将标签分组在一起。 15=]
在设计器中创建一个面板,将其命名为 labelPanel
或其他名称,然后在最内层的 for 循环中调用此方法:
this.labelPanel.Controls.Add(Tiles[i]);
请注意,由于标签的位置现在是相对于面板的,您需要再次调整它们。