【发布时间】:2013-09-28 10:01:50
【问题描述】:
尝试启用或禁用表单上的某些元素(复选框和文本框) 阅读this post,然后稍微重新制作一下这段代码
代码:
private void checkBoxEnableHotKeys_CheckedChanged(object sender, EventArgs e)
{
if (checkBoxEnableHotKeys.Checked)
{
EnableControls(this.Controls, true);
} //works perfect
if (!checkBoxEnableHotKeys.Checked)
{
EnableControls(this.Controls, false);
} //disable all controls
}
private void EnableControls(Control.ControlCollection controls, bool status)
{
foreach (Control c in controls)
{
c.Enabled = status;
if (c is MenuStrip)
{
c.Enabled = true;
}
if (c.Controls.Count > 0)
{
EnableControls(c.Controls, status);
}
}
checkBoxEnableHotKeys.Enabled = true; //not work
}
我在哪里做错了?为什么checkBoxEnableHotKeys.Enabled = true; 不起作用? (- 在 debagging 这部分代码以 false 传递的过程中 - 并且操作 = 不起作用 - 之前为假,之后为假......)
【问题讨论】:
-
你到底想做什么?如果要禁用某些控件,请记住禁用一个控件也会禁用其所有子控件
-
检查
checkBoxEnableHotKeys的父级是否已禁用。如果是,那么您已启用其父级以启用子级 -
哦!谢谢 !在
checkBoxEnableHotKeys.Enabled = true;之前添加tableLayoutPanel1.Enabled = true;- 现在可以了。 - 禁用一个控件也将禁用它的所有子控件 - 注意,谢谢
标签: c# .net winforms foreach controls