首页 > 解决方案 > 如何在c#中显示组框内的所有项目

问题描述

我有一个包含一些文本框和标签的 Windows 窗体。在我的程序中,我将它们全部设置为不可见,当我按下按钮时,它使所有标签和文本框都可以通过下面的代码可见,并且效果很好。

List<Label> lbls = this.Controls.OfType<Label>().ToList();

foreach (var lbl in lbls)
{
    if (lbl.Name.StartsWith("label"))
    {
        lbl.Visible = true;
    }
}
List<TextBox> txts = this.Controls.OfType<TextBox>().ToList();

foreach (var txt in txts)
{
    if (txt.Name.StartsWith("textBox"))
    {
        txt.Visible = true;
    }
}

但是,当我将所有标签和文本框都放入 groupbox 时。我的代码不起作用。我该怎么做?

注意:当我按下按钮时,我的 groupbox 也是不可见的。

groupBox1.visible =true;

此代码有效并且组框面板似乎,但标签和文本框的代码不起作用。

标签: c#

解决方案


因为您在这里使用 Form 的直系子级

List<Label> lbls = this.Controls.OfType<Label>().ToList();

请注意this,这意味着您当前的表格。因此,当您在表单外部进行控制时,它可以工作,

但是当你把它们放在组框里时,它就不再是直接的孩子了。

所以用

List<Label> lbls = groupBox1.Controls.OfType<Label>().ToList();

这将使您能够访问组框的直接子项。


推荐阅读