在c#中绘制标签数组

时间:2016-10-08 06:27:51

标签: c# .net forms label

对于我的项目,我需要创建一个类似于网格的可点击图块。为此,我决定尝试使用一组标签并单击其中任何一个标签,这将导致与单击的标签对应的鼠标单击事件。我不想使用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方法中使用此代码,但问题是它没有抛出错误但实际上并没有获取表单上的标签,它只是初始化标签但不是画出它们,有人知道如何将它们实际添加到表格中。

2 个答案:

答案 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]);