目前,我在启动时禁用了表单的大部分控件,因为在加载文件之前您无法使用它们。然而,一旦文件被加载,控件就应该被启用。
我正在使用绑定,但我认为它们不是一个好的解决方案。其一,这是不必要的复杂性。其次,你不能对所有事情都使用绑定。例如,MenuStrip 项不能将其 Enabled 属性绑定到 fileLoaded 属性。只有整个菜单可以,而且我不想在启动时禁用整个菜单,只禁用对文件进行操作的某些菜单操作。
我真的只是在寻找一种方法来实现一切。当被问到时,大多数人都会这样回答:
foreach (Control c in Controls)
{
c.Enabled = true;
}
但是,这不适用于启用其他控件(如面板或自定义控件)中的 MenuStrip 项或控件。因此它不会在容器内启用滚动条。
我想我可以使用该行并手动启用其他所有内容,但我总是可以manually启用一切。我正在寻找一种自动启用的方法一切.
递归
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);
}
}
Edit
应该检查控件集合计数而不是 HasControls 这是 Webcontrols
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)