【发布时间】:2021-05-28 15:38:15
【问题描述】:
我在 c# 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”,我知道我的问题模棱两可,我的英语不太好,但请我尽力提供一点帮助。谢谢。
【问题讨论】:
-
你的方法根本上是错误的,你应该首先解释为什么你(认为你需要)这样做。
-
你试过 LINQ/Lambda 表达式吗?
-
您需要将它们放入列表中,然后使用 LINQ/Lambda 表达式对其进行修改。
-
Sikander Hayyat,我稍后会尝试使用 Linq/Lambda 表达式,现在我正在尝试使用 Michał Turczyn 的答案,这正是我想要的,谢谢。
-
是的,有更好的方法,我想我也没有很好地解释我需要什么,谢谢@aybe。