2017-10-16 1 views
-3
for (int i=1; i<4; i++) 
{ 
    string buttonName = "button" + i; 
    if (Controls[buttonName].BackColor = Color.Red) 
    { 
     Controls[buttonName].Enabled = false; 
    } 
} 

이 코드는 완벽하게 작동합니다. 코드는 3 개의 다른 버튼 (button1, button2, button3)을 확인하고 색상이 빨간색 인 경우 비활성화됩니다. 같은 방법으로 문자열을 사용하여 목록 상자를 참조하는 방법은Csharp에서 문자열을 사용하여 ListBox 이름을 참조하는 방법

Controls[buttonName] 

있습니까 : 버튼의 이름은 문자열을 사용하여 참조? "제어 장치"를 변경해야하는 이유는 무엇입니까? 방법에 대한 귀하의 컨트롤 이름을 필요없이 .OfType<Button>() 위해 동일을 당신은 단순히 모든리스트 박스를 통해 가고 싶은 경우

+2

여전히 컨트롤을 사용하지만 항목을 ListBox로 캐스팅합니다. 다음과 같이 할 수 있습니다 : 'var myListBox = Controls [ "ListBox1"]를 ListBox로 지정하십시오; // 이제 ListBox 객체에 무언가를 할 수 있습니다.' – user3583535

+0

Perfect. 고맙습니다! – Robri1989

+0

같은 방식으로 문자열로 GroupBox를 참조 할 수 있습니까? – Robri1989

답변

0

, 당신은 또한 .OfType<T>()

foreach (ListBox lb in this.Controls.OfType<ListBox>()) 
{ 
    lb.Enabled = false; 
} 

를 사용할 수 있습니다 ... 그리고 그것은 물론 작동합니다 그들을 열거하십시오.

+0

건배! 좋은 생각 – Robri1989

관련 문제