c# - 如何在c#中查看groupbox内的所有项目

标签 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;
    }
}

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

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

groupBox1.visible =true;

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

最佳答案

因为您正在使用此处 Form 的直接子级

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

注意this表示您当前的表单。所以当你在表单之外有控件时它就可以工作,

但是当您将它们放入组框中时,它将不再是直接子级。

所以使用

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

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

关于c# - 如何在c#中查看groupbox内的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52478776/

相关文章:

c# - 从您打算测试的类继承是否总是次优的?

c# - 如何使用后端 asp.net c# 的 Angular 网站读取其他网站数据

c# - 抽象掉 Main 的框架

c# - 如何使用 C# 清除网络接口(interface) (nic) 的默认网关

c# - 如何让 MVVM Light Messenger 与 PCL 配合使用

c# - Visual Studio 扩展 : How to get the "path" of a solution folder on selection?

c# - 循环显示 5 个图像的动态图 block

c# - HttpWebRequest 中的 SSL 重新协商 (SEC_I_RENEGOTIATE) 问题并且没有保持事件状态

c# - 匹配 [0-9]-[0-9]-[0-9] 的模式,但不匹配 [0-9]-[0-9]

c# - Unity (C#) 中的继承变量问题(更改继承变量)