2017-10-16 27 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] 

有没有一种方法可以用同样的方式使用字符串引用ListBox?什么将“控制”需要改变?

+2

您仍然会使用控件,但将该项目转换为ListBox。你可以这样做: 'var myListBox = Controls [“ListBox1”] as ListBox; //现在你可以对列表框对象做些什么操作了。 – user3583535

+0

完美。谢谢! – Robri1989

+0

是否有可能以同样的方式使用字符串引用GroupBox? – Robri1989

回答

0

如果你只是想遍历所有列表框,您还可以使用.OfType<T>()

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

...当然它会工作同为.OfType<Button>(),而不需要命名的方式,以您的控件列举它们。

+0

干杯!好想法 – Robri1989

相关问题