我试图用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)?

10-08 06:11
查看更多