我想在我的表单上的所有文本框中添加一个事件:
foreach (Control C in this.Controls)
{
if (C.GetType() == typeof(System.Windows.Forms.TextBox))
{
C.TextChanged += new EventHandler(C_TextChanged);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是它们存储在几个组框中,而我的循环看不到它们.我可以单独循环遍历每个组框的控件,但是可以在一个循环中以简单的方式完成所有操作吗?
目前我在启动时禁用了大部分表单的控件,因为在加载文件之前无法使用它们.但是,一旦加载文件,控件应该启用.
我正在使用绑定,但我不认为它们是一个很好的解决方案.首先,它是不必要的复杂性.其次,你不能使用绑定的一切.例如,MenuStrip项不能将其Enabled属性绑定到fileLoaded属性.只有整个菜单可以,我不想在启动时禁用整个菜单,只需要对文件进行操作的某些菜单操作.
我真的只是想找到一种方法来实现一切.大多数人被问到会回答这个:
foreach (Control c in Controls)
{
c.Enabled = true;
}
Run Code Online (Sandbox Code Playgroud)
但是,这不适用于在其他控件(如Panel或自定义控件)中启用MenuStrip项或控件.因此,它不会在容器中启用滚动条.
我想我可以使用该行并手动启用其他所有内容,但我总是可以手动启用所有内容.我正在寻找一种自动启用一切的方法.