首页 > 解决方案 > C# 使用数组启用/禁用按钮,Win 表单/MVP

问题描述

我在 ac#winforms 桌面应用程序中有一组按钮 [42]:

private Button[] _tabButton = new Button[]{button00,button01,/*...,*/button41};

比,当我调用“启动”方法时,我只是这样做:

for(int i=0;i<_tabButton.Length;i++)
      {
       _tabButton[i].enabled = false;
      }

这是非常简单和合乎逻辑的。现在,我是 MVP/MVC 的新手,但我在代码中做了一些工作......我创建了一个接口并实现它,以获得:

public bool Button_0 { get => button00.Enabled; set => button00.Enabled = value; }
   //...
   public bool Button_41 { get => button41.Enabled; set => button41.Enabled = value; }

还 :

 private bool[] _arrayButton_bool;// = new bool[42];//an array of Button_0,Button_1...

所以,我的问题是:如何启用/禁用 42 个按钮,在布尔数组中使用布尔变量“Button_0 ... Button_41”。

如果我说 :

 `_arrayButton_bool = {Button_0,Button_1,...,Button_41};
 //... inside intiate methode :
  for(int i=0;i<_arrayButton_bool.Length;i++)
      {
       _arrayButton_bool[i].enabled = false;
      }`

这将影响“_arrayButton_bool[0]”,而不是变量:“Button_0”,我知道我的问题是模棱两可的,我的英语不太好,但请我尽力提供一点帮助。谢谢。

标签: c#arrayswinformsbutton

解决方案


您定义 setter 如下:

public bool Button_0 
{
    get => button00.Enabled; 
    set => button00.Enabled = value; 
}

所以Burron_0 = true;会启用 button00按钮。但问题是,这是二传手,所以在底层它是方法,你不能简单地把它放在一个数组中。尝试创建这些属性的数组只会调用每个 getter 并提供 bool 值。

所以你问的是不可能的。我能想到的最干净的方法是定义方法:

private void SetButtonsEnabledProperty(bool enabled)
{
    Button_0 = enabled;
    // through to
    Button_41 = enabled;
}

推荐阅读