2010-04-22 13 views
1

Windows Forms 양식에 세 개의 탭이 있습니다. TabPages[0]에서 선택된 RadioButton에 따라 관련 TabPage에 몇 가지 동적 컨트롤을 추가했습니다. Button_Click 이벤트에서 컨트롤이 추가되었지만 다른 (관련성이없는) TabPage에서 동적으로 추가 된 컨트롤을 제거 할 수 없다는 문제가 있습니다.동적 컨트롤 추가 및 제거 C#을 사용하는 Windows Forms

Label label235 = new Label(); 
TextBox tbMax = new TextBox(); 
label235.Name = "label235"; 
tbMax.Name = "txtBoxNoiseMax"; 
label235.Text = "Noise"; 
tbMax.ReadOnly = true; 
label235.ForeColor = System.Drawing.Color.Blue; 
tbMax.BackColor = System.Drawing.Color.White; 
label235.Size = new Size(74, 13); 
tbMax.Size = new Size(85, 20); 

if (radioButton1.Checked) 
{ 
    label235.Location = new Point(8, 476); 
    tbMax.Location = new Point(138, 473); 

    tabControl.TabPages[1].Controls.Add(label235); 
    tabControl.TabPages[1].Controls.Add(tbMax); 

    tabControl.TabPages[2].Controls.RemoveByKey("label235"); 
    tabControl.TabPages[2].Controls.RemoveByKey("tbMax"); 
} 
else 
{ 
    label235.Location = new Point(8, 538); 
    tbMax.Location = new Point(138, 535); 

    tabControl.TabPages[1].Controls.RemoveByKey("label235"); 
    tabControl.TabPages[1].Controls.RemoveByKey("tbMax"); 

    tabControl.TabPages[2].Controls.Add(label235); 
    tabControl.TabPages[2].Controls.Add(tbMax); 
} 

내가 그런 실수를 만드는 중이라서 :

여기 내 코드입니까?

+0

tbMax.Name = "txtBoxNoiseMax"; 

을 변경해야합니다. RemoveByKey 이전과 이후의 Controls 목록에는 무엇이 있습니까? – RvdK

답변

1

우선 tbMax의 이름은 "tbMax"가 아니라 "txtBoxNoiseMax"입니다. 그래서 하나, 그것은 RemoveByKey에서 TextBox를 찾을 수 없을 것입니다.

매번 새로운 컨트롤을 만들고 있습니다. LC로

+0

Thx ... 오류가 지금 수정되었습니다 :) – gsvirdi

0

이미 언급 한 :

당신은 당신의 텍스트 상자 변수 tbMax 이름,하지만 당신은 그것을 이름 txtBoxNoiseMax했다. RemoveByKey에 대한 설명을 살펴보면 이름 속성에서 작동하는 것을 확인할 수 있습니다. 응용 프로그램을 디버깅 시도했다 그래서 당신은

tbMax.Name = "tbMax"; 
관련 문제