我试图用Button
中使用的所有Form1
填充数组。
Button[] ButtonArray = new Button[5];
ButtonArray[0] = button1;
ButtonArray[1] = button2;
ButtonArray[2] = button3;
ButtonArray[3] = button4;
ButtonArray[4] = button5;
此代码可以正常工作。
但是,例如,如果我有 100个按钮,这是一个漫长的过程。
最佳答案
如果所有Button
都在表单上,则可以尝试使用Linq:
using System.Linq;
...
Button[] ButtonArray = Controls
.OfType<Button>()
.ToArray();
编辑:如果您在组框,面板中有一些按钮(即不是直接在表单上,而是在某种容器上),则必须将代码详细说明如下
private static IEnumerable<Button> GetAllButtons(Control control) {
IEnumerable<Control> controls = control.Controls.OfType<Control>();
return controls
.OfType<Button>()
.Concat<Button>(controls
.SelectMany(ctrl => GetAllButtons(ctrl)));
}
...
Button[] ButtonArray = GetAllButtons(this).ToArray();
有关详细信息,请参见How to get ALL child controls of a Windows Forms form of a specific type (Button/Textbox)?。