我有这行代码:
button0.BorderBrush = new SolidColorBrush(Colors.Red);
button1.BorderBrush = new SolidColorBrush(Colors.Red);
button2.BorderBrush = new SolidColorBrush(Colors.Red);
...
我怎样才能纠正这个:
(button + "numberOfButton").BorderBrush = new SolidColorBrush(Colors.Red);
答案 0 :(得分:2)
任何时候你发现自己有这样的变量:
button0
button1
button2
etc...
应该拥有的是一个数组。如果控件本身在表单上已经是静态的,那么您可以在加载表单时简单地构建数组。像这样:
public class MyForm : Form
{
private IEnumerable<Button> myButtons;
public MyForm()
{
myButtons = new List<Button>
{
button0, button1, button2 // etc...
};
}
// etc...
}
然后当你需要循环按钮时,你只需循环遍历集合:
foreach (var button in myButtons)
button.BorderBrush = new SolidColorBrush(Colors.Red);
如果您需要按索引引用集合元素,请使用IList<>
而不是IEnumerable<>
。如果您需要执行更复杂的操作,请使用any number of collection types。
答案 1 :(得分:1)
您可以使用方法Control.Find按名称找到它:
var button = this.Control.Find("button0", true).FirstOrDefault();
但最好将按钮存储在数组中并通过索引获取它们:
var buttons = new Control[10];
buttons[0] = button0;
...