c# - 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”,我知道我的问题是模棱两可的,我的英语不太好,但请我尽力提供一点帮助。谢谢。
解决方案
您定义 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;
}
推荐阅读
- python - 在一定时间后超时功能
- css - 根据邮件客户端将图片显示从base64改为src
- python-3.x - 错误:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
- firebase - img 未从 :src 加载
- powershell - Powershell - 此命令无法运行
- php - 为什么使用返回函数时全局变量显示未定义?
- ruby-on-rails - Chrome 可以很好地连接到以“rails s”开头的 Rails 服务器,在系统规范期间因 ERR_CONNECTION_REFUSED 失败
- powerbi - Power BI Embedded - 是否有任何公共 ClientID、ClientSecret 和 TenantId 可用于实施“ServicePrincipal”的 App-Owns 场景
- python - 如何在抓取时提取嵌套值
- python - 如何访问和更改 Pygame.midi?