我有这种情况,我有一个winform,其中有10到15个标签和组合框,这些都是不可见的。现在在运行时我传递了多少这些被激活的?他们的名字属性是从lable1到lable16和combobox1到combobox16。我正在使用以下代码来测试我是否可以找到控件,但它似乎全部失败,并且由于这些控件和组合框是在一个面板上。
以下是我使用的代码:
foreach (Control ctrl in this.Controls)
{
if (ctrl is Label)
{
MessageBox.Show(((Label)ctrl).Text);
}
}
答案 0 :(得分:2)
您必须将this.Controls
替换为this.Panel1.Controls
或您的面板控件名称。
也可以看看Control.ControlCollection.Find Method 来使用控件名称。
答案 1 :(得分:2)
你必须进行递归。
ctrl
本身也有Controls
。如果你只是走遍整棵树,你最终会找到所有控件。
答案 2 :(得分:1)
你实际上有点回答了你自己的问题......
您在this.Control
s Panel1.Controls
中找不到控件,但{{1}}:)
答案 3 :(得分:0)
你可以检查当前控件(ctrl)是否有控件来循环它们
e.g:
if (ctrl.Controls.Count >0)
{
//do your logic here
}