0

我正在尝试使用表单制作一个小型打字游戏,并且需要一些标签方面的帮助。所以,我需要创建几个带有不同文本的标签,我想知道是否有办法做到这一点,Label word = new Label()以便我可以在以后的任何时间控制任何或至少首先创建的标签?

也许有一些我应该阅读更多的特定主题?

4

3 回答 3

0

您可以使用标签数组并稍后通过索引访问它们

Label []words = new Label[10];

如果您在编译时不知道需要多少标签,则可以使用List

List<Label> lstLabels = new List<Label>();
于 2013-07-29T15:50:41.850 回答
0

您可以将标签创建为:

Label l = new Label();
l.Location = somepoint;
l.Text = "text" + this.Controls.Count;
this.Controls.Add(l);

检索所有标签后(在此示例中,它将在按钮单击事件下):

    private void button1_Click(object sender, EventArgs e)
    {
        //assuming there might be other controls,
        //it will get all labels in the form
        Label[] c = this.Controls.OfType<Label>().ToArray();

        //...do what you need
    }

标签的顺序与添加的顺序相同。

如果您只想获得 1 个标签,例如,在文本框中输入的标签文本(因为您说所有不同的文本):

Label c1 = this.Controls.OfType<Label>().Where(l => l.Text.ToLower() == textBox1.Text.ToLower()).Single();
于 2013-07-29T16:56:27.003 回答
0

如果您有固定的标签限制,那么您可以执行 Adil 上面提到的操作,并且可以稍后访问它们。就像,

 Label []words = new Label[10];

但是,如果您有动态数量的标签,那么一种选择是在运行时将它们添加到表单中,然后使用反射访问它们。

  foreach(Control c in yourForm.Controls)
  if(c is label)
  {
      //your code
  }
于 2013-07-29T15:53:48.707 回答