是否可以将按钮变为变量?

时间:2017-11-12 21:34:18

标签: c# button

我在C#中有一个带有26个按钮的代码,我希望它们都被禁用,直到用户做某事,但我不想复制/粘贴button1.Enable = false; Button2.Enable = false ... 那么有办法做这样的事情:

   for (int i = 1; i < 26; i++)
   {
   button+i.Enable = false;
   }

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您可能想直接迭代按钮。

foreach(var button in this.Controls.OfType<Button>())
{
   button.Enable = false;
}

答案 1 :(得分:0)

您可以使用[Errno 1] Operation not permitted

Form.Controls.Find()

代码假定您的按钮的名称为for (int i = 1; i < 26; i++) { this.Controls.Find("button" + i, searchAllChildren: false).Enable = false; } button1

不可能像你一样直接,但这无论如何都没有意义。

答案 2 :(得分:0)

使用Controls.FindControls.OfType<Button>()中的任何一个仅在运行时有效。我更喜欢静态可检查的编译时方法。然后,如果删除表单上的按钮,代码将无法编译。帮助您提供类型安全的感觉。

我是这样做的。从一个字段开始,将按钮保存在一个数组中:

private Button[] _buttons = null;

在初始化代码中设置一次数组:

_buttons = new[] { button1, button2, button26 };

然后,当您需要对按钮执行某些操作时,您只需执行此操作:

foreach (var button in _buttons)
{
    button.Enable = false;
}