2016-09-02 4 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

어쩌면 위치 속성을 모두 서로 위에 있지 않고 맨 위에 만 볼 수 있도록 설정하는 것이 좋습니다. 어려운 추측, 그러한 문제는 꽤 분명해야합니다. –

+0

시도 할 때 완벽하게 작동합니다. 이것은 유일한 초기화 코드입니까? 적절한 위치 (x, y)를 지정하지 않으면 서로 오버레이되는 것 같습니다. – stefankmitph

+0

잘 작동합니다! [this] (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 순서가 비틀 었는지 알지 못합니다.

관련 문제