在变量名称中传递按钮的编号

时间:2015-08-14 16:43:37

标签: c#

我有这行代码:

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);

2 个答案:

答案 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;
...