有没有办法一次性禁用页面上的所有按钮。?
if (Directory.Exists(folder))
{
all buttons enabled
}
else
{
All buttons disabled
Label4.Text = "Agent Share folder does not exists";
}
任何建议 感谢
答案 0 :(得分:8)
foreach (Button button in this.Controls.OfType<Button>())
button.Enabled = false;
修改强>
您实际上可能需要做更多的事情。 Controls集合仅获取作为特定父项的直接子项的控件,并且它不会递归搜索整个页面以查找 all 按钮。您可以使用this page上的递归函数来递归查找所有按钮并禁用它们中的每一个按钮。
如果您从上面的链接页面添加代码,那么您的代码将是:
foreach (Button button in FindControls<Button>(this))
button.Enabled = false;
一旦你使用它们,这些递归方法在ASP.NET中会非常方便。
答案 1 :(得分:1)
正如其他答案所说,最终您将需要在页面中循环并查找和禁用包含元素。减轻这种情况的一种方法可能是将所有必要的按钮放在面板(或多个面板)中,并禁用面板代替按钮。
答案 2 :(得分:1)
在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");
}
}
答案 3 :(得分:0)
伪代码:
for each (Control c in Page.Controls)
if (typeof(c) == Button)
c.enabled = false;
答案 4 :(得分:0)
行间的某些内容可能有所帮助:
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);
}