目前我在启动时禁用了大部分表单的控件,因为在加载文件之前无法使用它们.但是,一旦加载文件,控件应该启用.
我正在使用绑定,但我不认为它们是一个很好的解决方案.首先,它是不必要的复杂性.其次,你不能使用绑定的一切.例如,MenuStrip项不能将其Enabled属性绑定到fileLoaded属性.只有整个菜单可以,我不想在启动时禁用整个菜单,只需要对文件进行操作的某些菜单操作.
我真的只是想找到一种方法来实现一切.大多数人被问到会回答这个:
foreach (Control c in Controls)
{
c.Enabled = true;
}
Run Code Online (Sandbox Code Playgroud)
但是,这不适用于在其他控件(如Panel或自定义控件)中启用MenuStrip项或控件.因此,它不会在容器中启用滚动条.
我想我可以使用该行并手动启用其他所有内容,但我总是可以手动启用所有内容.我正在寻找一种自动启用一切的方法.
msa*_*het 12
递归
private void enableControls(Control.ControlCollection Controls)
{
foreach (Control c in Controls)
{
c.Enabled = true;
if (c is MenuStrip)
{
foreach(var item in ((MenuStrip)c).Items)
{
item.Enabled = true;
}
}
if (c.ControlCollection.Count > 0)
enableControls(c.Controls);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
本来应该检查控件收集计数而不是HasControls哪个是Webcontrols
将所有控件放在面板中;
panel.enable = false - >面板中的所有控件都将被禁用panel.enable = true - >面板中的所有控件都将被启用(如果它们处于默认启用状态,很快就会使用启用的控件填充面板,让面板禁用因此,您的控件也将被禁用.启用面板后,您的控件将被启用)
归档时间: |
|
查看次数: |
13231 次 |
最近记录: |