对于我的项目,我需要创建一个类似于网格的可点击图块。为此,我决定尝试使用一组标签并单击其中任何一个标签,这将导致与单击的标签对应的鼠标单击事件。我不想使用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
方法中使用此代码,但问题是它没有抛出错误但实际上并没有获取表单上的标签,它只是初始化标签但不是画出它们,有人知道如何将它们实际添加到表格中。
答案 0 :(得分:1)
这很容易做到!
在最里面的for循环中,添加以下行:
this.Controls.Add(Tiles[i]);
首先获取表单上的所有控件,然后在其中添加标签!
但是,我建议您将标签添加到Panel
,只是因为您正在创建网格,您应该使用Panel
将标签组合在一起。
在设计器中创建一个面板,将其命名为labelPanel
或其他任何面板,并在最里面的for循环中调用此方法:
this.labelPanel.Controls.Add(Tiles[i]);
请注意,由于标签的位置现在相对于面板,您需要再次调整它们。
答案 1 :(得分:0)
您必须将该标签添加到表单中。比如,在表单中放置一个groupbox并将其命名为group1。 现在将标签添加到该组。 group1.Controls.Add(瓷砖[I]);