2016-03-07 63 views
1

These are 10 labels on form1 by named label1,label2,....,label10要求在運行時如標籤控件更改C#

我想改變標籤控制文本一樣,如果標籤名稱是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(); 
      } 
     } 
    } 
+1

分配似乎是相同的:'控件[「標籤」 + ai.ToString()]文字= ai.ToString();'爲什麼不用。加工?你會得到什麼錯誤? – Ian

+0

Sir Martin Liversage Error在WindowsFormsApplication1.exe中發生未處理的類型'System.NullReferenceException'的異常 –

+1

看起來像您的'Controls [「label」+ ai.ToString()]'未找到 – Ian

回答

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(); 
+0

桑傑伊尼沙德爵士謝謝我試着去做。 –

+0

先生有一個錯誤,IndexOutofRangeException是未處理的 –

+0

@BiLaLJaMiL您的標籤名'lable1','lable2',...是錯誤的,請檢查您的控件名稱 –

0

如果你把你的標籤在面板中,你可以做這樣的:

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