我创建了一个带有多个按钮、文本框、组合框等的 Windows 窗体。在执行过程中的某个时刻,我禁用了所有这些按钮,如下所示:
Control01.Enabled = false;
Control02.Enabled = false;
Control03.Enabled = false;
// ...
Control10.Enabled = false;
我怎样才能自动化呢?
您可以枚举控件并禁用它们:
foreach(var control in Controls.Cast<Control>())
control.Enabled = false;
如果只想禁用按钮,可以使用 LINQ
foreach(var control in Controls.OfType<Button>())
control.Enabled = false;
或者,如果您有其他选择标准
var controlsToDisable = Controls.OfType<TextBox>()
.Where(t => t.Name.StartsWith("Control")); // etc
foreach(var control in controlsToDisable)
control.Enabled = false;
您可以将for
循环与Controls.Find()
方法结合使用:
string controlIdNr ="";
for(int i=1;i++;i<11)
{
controlIdNr = "Control" + i.ToString().PadLeft(2,'0');
this.Controls.Find(controlIdNr,true).Enabled = false;
}
这当然是如果您的控件具有结构化的 id 值。如果要禁用所有控件或给定类型的所有控件,lazyberezovsky 的答案更好!
PS:我没有测试过代码,但无论如何都是这样的......
如果您的布局允许,您可以将它们放在面板上并在一行中禁用面板。或者可能是几个面板。