从现有按钮创建按钮的数组(集合)

有没有一种简单的方法从我的表单上的现有按钮创建按钮集合? (在c#中)。

我的表单上已经有一系列按钮,我想使用索引来访问它们…例如:

myButtonArray[0].ForeColor ...// Do something with it 

可以这样做吗?

编辑:我可以将数组设置为具有通用的OnClick事件吗? 然后确定点击了arrays中的哪个按钮,比如改变它的颜色?

您可以像对待任何其他arrays一样进行此操作。 例如:

 Button[] array = { firstButton, secondButton }; 

或者如果您需要在一个地方申报并在以后分配:

 Button[] array; ... array = new Button[] { firstButton, secondButton }; 

在C#3+中,您可以对数组初始值设定项使用隐式类型:

 Button[] array; ... array = new[] { firstButton, secondButton }; 

您可能还想考虑使用List

 List 

LINQ救援!!

 Button[] buttons = this.Controls.OfType 
 var myButtonArray = new [] {this.Button1, this.Button2, ...} 

如果有很多按钮来简化此过程,您可以在表单级别尝试此代码:

 this.Controls.OfType 

您可以使用控件集合中具有非空控件集合本身的任何控件来解决此问题。

就像是:

 var myButtonArray = new[] {btn1, btn2, btn3, btn4}; 

您拥有表单的Controls属性中的所有控件,因此您必须迭代该集合并将其添加到您的数组中。

 List 

假设有一个命名约定……

 List 

为了满足您的要求 🙁 Edit: Can I set the array to have a generic OnClick event? And then determine which button in the array was clicked and, say, change its color?

 List 

如果您使用的是C#7.0或更高版本,则可以使用is关键字检查每个控件是否为循环中的按钮。

 List 

对于旧版本的C#,请参阅@ Edgar Hernandez的回答