禁用页面上的多个按钮控件

有没有办法一次禁用页面上的所有按钮。?

if (Directory.Exists(folder)) { all buttons enabled } else { All buttons disabled Label4.Text = "Agent Share folder does not exists"; } 

任何建议谢谢

 foreach (Button button in this.Controls.OfType 

编辑:

实际上你可能需要做更多的事情。 Controls集合仅获取作为特定父项的直接子项的控件,并且它不会递归搜索整个页面以查找所有按钮。 您可以在此页面上使用类似递归函数的内容来递归查找所有按钮并禁用其中的每一个按钮。

如果您从上面的链接页面添加代码,那么您的代码将是:

 foreach (Button button in FindControls 

一旦你使用它们几次,这些递归方法在ASP.NET中会非常方便。

正如其他答案所说,最终你需要在页面中循环并查找和禁用包含元素。 减轻这种情况的一种方法可能是将所有必要的按钮放在面板(或多个面板)中,并禁用面板代替按钮。

在Windows窗体环境中,这样的东西应该适合您:

  private void ToggleActivationOfControls(Control ContainingControl, Boolean ControlIsEnabled) { try { foreach (Control ctrl in ContainingControl.Controls) { if (ctrl.GetType() == typeof(Button)) { ctrl.Enabled = ControlIsEnabled; } } } catch (Exception ex) { Trace.TraceError("Error occurred during ToggleActivationOfControls"); } } 

伪代码:

 for each (Control c in Page.Controls) if (typeof(c) == Button) c.enabled = false; 

行中的某些内容可能有所帮助:

 protected void DisableButtons(Control root) { foreach (Control ctrl in root.Controls) { if (ctrl is Button) { ((WebControl)ctrl).Enabled = false; } else { if (ctrl.Controls.Count > 0) { DisableButtons(ctrl); } } } } 

可以像这样调用:

 protected void Page_Load(object sender, EventArgs e) { DisableButtons(this); }