【问题标题】:Required changing in controls like labels at runtime in C #需要在 C# 中在运行时更改控件(如标签)
【发布时间】:2016-03-07 08:34:56
【问题描述】:

我想更改标签控件文本,例如标签名称是否为 label1,所以 1 是奇数,label1 的文本应更改为 1,如果标签名称为 label2,则标签文本应更改为 2,依此类推。

以下代码不起作用。

private void Form1_Load(object sender, EventArgs e)
    {
       for(int ai =1; ai<=13; ai++)
        {
            if(ai % 2 == 0)
            {
                Controls["label" + ai.ToString()].Text = ai.ToString ();
            }

            else
            {
               Controls["label" + ai.ToString()].Text = ai.ToString ();
            }
        }
    }

【问题讨论】:

  • 分配似乎是相同的:Controls["label" + ai.ToString()].Text = ai.ToString (); 为什么它不起作用?你得到什么错误?
  • Sir Martin Liversage 错误 WindowsFormsApplication1.exe 中发生了“System.NullReferenceException”类型的未处理异常
  • 好像你的Controls["label" + ai.ToString()] 没有找到
  • sir 控件在 form1 上可用,但是当我编码 label1.text = "1" 时代码不起作用,然后它可以工作,但名称连接它不起作用
  • Martin Liversage 爵士......非常感谢,您的陈述解决了问题......

标签: c#


【解决方案1】:

你可以使用this.Controls.Find()

参考Control.ControlCollection.Find Method

你可以试试

Control ctrl = this.Controls.Find("label" + ai.ToString(), false)[0];
ctrl.Text = ai.ToString();

this.Controls.Find("label" + ai.ToString(), false)[0].Text = ai.ToString();

【讨论】:

  • Sanjay Nishad 爵士谢谢我尽力去做。
  • 先生有错误,IndexOutofRangeException 未处理
  • @BiLaLJaMiL 您的标签名称lable1, lable2,... 错误,请检查您的控件名称
  • 先生,所有控件名称都是正确的...我已经仔细检查过
  • 您已将ai&lt;=13; 添加到您的for 循环中,13 的数字是否正确?
【解决方案2】:

如果您将标签放在面板中,您可以这样做:

 foreach (var control in myPanel.Controls)
            {
                if (control is Label)
                {
                    Label myLabel=control as Label;
                    myLabel.Text = myLabel.Name.Substring("label".Length);
                }
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多