2016-09-02 154 views
0

我有這樣的代碼:如何控制動態添加的usercontrol?

MyUserControl[] myControl = new MyUserControl[10]; 

當窗體加載:

for(int i = 0; i < 10; i++) 
{ 
    myControl[i] = new MyUserControl(); 
    myControl[i].label1.Text = "Title"; 

    this.Controls.Add (myControl[i]); 
} 

現在是顯示正常。

然後按下後像下面按鈕:

private void Button1_Click(object sender, EventArgs e) 
{ 
    myControl[0].label1.Text = "Other Title"; 
} 

當我看到調試模式,值通常被加入,但lable1文本不顯示「其他標題」。

所以,我嘗試下面的方法,但沒有任何工作。

myControl[0].label1.Update(); 
myControl[0].label1.Invalidate(); 
myControl[0].label1.Refresh(); 

請親切提醒。

+1

也許你應該考慮設置Location屬性,以使它們不是彼此重疊,而只能看到最上面的一個。很難猜測,這樣的問題應該是非常明顯的。 –

+0

當我嘗試時效果很好。這是你唯一的初始化代碼嗎?因爲當你沒有指定一個合適的位置(x,y)時,它們看起來會疊加在一起。 – stefankmitph

+0

工作正常!請參閱[本](http://i.stack.imgur.com/vN4gS.gif) –

回答

0

我不明白你的概念希望對您

private void Button1_Click(object sender, EventArgs e) 
{ 
    //myControl[0].label1.Text = "Other Title"; 

    MyUserControl ctrl = null; 
    foreach (var c in this.Controls) 
    { 
     if (c.GetType().Name == "MyUserControl") 
     { 
      var myctrl = (MyUserControl)c; 
      if (myctrl.Text == "Title") 
      { 
       ctrl = myctrl; 
       break; 
      } 
     } 
    } 
    if (ctrl != null) 
    { 
     ctrl.Text = "Other Title"; 
    } 
} 

這是一個非常簡單的例子,代碼將工作這個例子中工作,你必須提高,只要你喜歡

+0

不要忘記評論這篇文章 –

0

謝謝大家。我在這件事上得到了根本原因。

myControl[0].label1.Text = "Other Title"; 
myControl[0].BringToFront(); // <- Solved problem with this code. 

我不知道爲什麼z順序被扭曲。