如何迭代Button变量

EEE*_*EEE 0 c# asp.net user-interface button

我有16个按钮名为button1,button2 ......等迭代它们的最佳方法是什么?如何将这些按钮存储在(在数组或其他东西中)?我想做类似下面的事情:

public void func(string[] a)
{
     for(int i = 0; i<16;i++)
     {
          if(a[i]==something)
              button[i].image = someImage;
          else
              button[i].image = antoherImage;
     }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

坦率地说,最好不要有16个不同的变量.相反,有一个数组:

Button[] buttons = new Button[16];
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用您想要的语法(模块属性名称).缺点是设计师并不真正迎合这一点.通常情况下,我发现如果我需要大量相同类型的UI元素,那么以编程方式创建它们比在设计器中更容易,但这取决于具体情况.

另一个选择是使用Controls["button" + (i + 1)],但当你真的只想要一个数组时,这对我来说感觉有点像黑客.如果您不需要重新分配变量,可以使用:

Button[] buttons = new Button[16];
for (int i = 0; i < 16; i++)
{
    buttons[i] = (Button) Controls["button" + (i + 1)];
}
Run Code Online (Sandbox Code Playgroud)

从那时起你可以使用buttons数组......

当然你可以这样做:

Button[] buttons = { button1, button2, button3, button4, button5, ... };
Run Code Online (Sandbox Code Playgroud)