Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何迭代按钮变量_C#_Asp.net_User Interface_Button - Fatal编程技术网

C# 如何迭代按钮变量

C# 如何迭代按钮变量,c#,asp.net,user-interface,button,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 butt

我有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;
     }
}
public void func(字符串[]a)
{

对于(int i=0;i来说,坦率地说,最好不要从16个不同的变量开始。相反,要有一个数组:

Button[] buttons = new Button[16];
然后,您可以完全使用所需的语法(对属性名称进行模块化)。缺点是设计器并不能真正满足这一要求。通常我发现,如果我需要大量相同类型的UI元素,则通过编程方式创建它们比在设计器中创建它们更容易,但这取决于具体情况

另一种选择是使用
控件[“button”+(i+1)]
,但当您真正想要一个数组时,我觉得这有点像黑客。如果您不需要重新分配变量,您可以使用:


您可以通过使用容器的Controls()-集合轻松完成此操作:

foreach(Control ctrl in Me.Controls()) {
    if(ctrl.Name.Startswith("Button")) {
        //do something
    }
}
从这里,您可以访问容器中的每个控件,还可以将其强制转换为不同的类型,从而检查您的条件


Bobby

谢谢你的回答。我的按钮是windows窗体,每个按钮都像不同的对象一样创建。我如何才能将它们添加到数组中?@EEE:为什么一开始就必须单独创建它们?如果你可以从数组开始,那可能是最好的选择。我认为使用“控件[“按钮”+(I+1)]”是我想要的。我不知道如何访问这样的控件。非常感谢。您正在使用字符串数组(a[])中的值来确定按钮数组(button[])中的图像。a[]和按钮[]之间的相关性是什么?我将其作为示例编写。没有字符串数组。事实上,我检查了数据库中的一些值。
Button[] buttons = { button1, button2, button3, button4, button5, ... };
foreach(Control ctrl in Me.Controls()) {
    if(ctrl.Name.Startswith("Button")) {
        //do something
    }
}