相关疑难解决方法(0)

遍历表单上的所有控件,甚至是组框中的控件

我想在我的表单上的所有文本框中添加一个事件:

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)

问题是它们存储在几个组框中,而我的循环看不到它们.我可以单独循环遍历每个组框的控件,但是可以在一个循环中以简单的方式完成所有操作吗?

c# groupbox

19
推荐指数
4
解决办法
5万
查看次数

如何在表单上启用所有控件?

目前我在启动时禁用了大部分表单的控件,因为在加载文件之前无法使用它们.但是,一旦加载文件,控件应该启用.

我正在使用绑定,但我不认为它们是一个很好的解决方案.首先,它是不必要的复杂性.其次,你不能使用绑定的一切.例如,MenuStrip项不能将其Enabled属性绑定到fileLoaded属性.只有整个菜单可以,我不想在启动时禁用整个菜单,只需要对文件进行操作的某些菜单操作.

我真的只是想找到一种方法来实现一切.大多数人被问到会回答这个:

foreach (Control c in Controls)
{
    c.Enabled = true;
}
Run Code Online (Sandbox Code Playgroud)

但是,这不适用于在其他控件(如Panel或自定义控件)中启用MenuStrip项或控件.因此,它不会在容器中启用滚动条.

我想我可以使用该行并手动启用其他所有内容,但我总是可以手动启用所有内容.我正在寻找一种自动启用一切的方法.

c# loops winforms

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×2

groupbox ×1

loops ×1

winforms ×1