C# 如何控制表单上的所有元素

C# 如何控制表单上的所有元素,c#,.net,winforms,foreach,controls,C#,.net,Winforms,Foreach,Controls,尝试启用或禁用表单上的某些元素(复选框和文本框) 阅读并重新制作一点这段代码 代码: 我哪里出错了?为什么checkBoxEnableHotKeys.Enabled=true不工作?(-在对这部分代码进行解包时,使用false传递-and操作=不工作-false before和false after…)我喜欢返回表单的所有子控件(包括嵌套控件)的方法 发件人: 我喜欢这个答案: 这里的技巧是控件不是列表或IEnumerable,而是控件集合 我建议使用将返回更多内容的控件扩展..queryabl

尝试启用或禁用表单上的某些元素(复选框和文本框) 阅读并重新制作一点这段代码

代码:


我哪里出错了?为什么
checkBoxEnableHotKeys.Enabled=true不工作?(-在对这部分代码进行解包时,使用false传递-and操作
=
不工作-false before和false after…)

我喜欢返回表单的所有子控件(包括嵌套控件)的方法

发件人:

我喜欢这个答案:

这里的技巧是控件不是列表或IEnumerable,而是控件集合

我建议使用将返回更多内容的控件扩展..queryable;)

public static IEnumerable All(此控件集合控件)
{
foreach(控件中的控件)
{
foreach(Control.Controls.All()中的Control孙辈)
收益回报孙子;
收益率控制;
}
}
然后你可以做:

foreach(var textbox in this.Controls.All().OfType<TextBox>)
{
    // Apply logic to the textbox here
}
foreach(此.Controls.All()类型中的var文本框)
{
//将逻辑应用于此处的文本框
}

你到底想做什么?如果要禁用某些控件,请记住禁用控件也会禁用其所有子控件Check
checkBoxEnableHotKeys
的父控件已禁用。如果是,则您已启用其父级以启用childoh!谢谢添加
tableLayoutPanel1.Enabled=true
before
checkBoxEnableHotKeys.Enabled=true-现在它的工作。-禁用一个控件也将禁用它的所有子控件-注意,谢谢,我希望我意识到你们可以在我以前的工作中得到那个样的type属性。在许多项目中,我有一个递归方法,它迭代所有控件/控件的子项,并根据类型执行大量不同的操作。这会让它更干净。
public static IEnumerable<Control> All(this ControlCollection controls)
    {
        foreach (Control control in controls)
        {
            foreach (Control grandChild in control.Controls.All())
                yield return grandChild;

            yield return control;
        }
    }
foreach(var textbox in this.Controls.All().OfType<TextBox>)
{
    // Apply logic to the textbox here
}