C# 获取的controls缺东西 50

我的窗体结构设计了多个种类控件,用Form.Controls获取所有控件,但是出现了一个问题,部分空间会被遗漏,可见性是一致的,然后遍历的时候,有的控件就无法获取到,比如... 我的窗体结构设计了多个种类控件,用Form.Controls获取所有控件,但是出现了一个问题,部分空间会被遗漏,可见性是一致的,然后遍历的时候,有的控件就无法获取到,比如我设计了3个文本框,除了名字和对应的事件,其他完全一样,但是中间那个根本不会被获取到。这个怎么解决?
Control.CheckForIllegalCrossThreadCalls = false;
Control.ControlCollection cons = f.Controls;
foreach (Control cc in cons)
{
Control.ControlCollection subcons = cc.Controls;
foreach(Control con in subcons){
SetCon(con);
}
SetCon(cc);
}
Control.CheckForIllegalCrossThreadCalls = true;
我知道临时关闭跨线程检测是不标准的,不用吐槽这个。SetCon();是我写的控件重写函数,这是个重写窗口的类。因为涉及到可能存在groupbox,或是panel,所以用了嵌套循环。
展开
 我来答
百度网友ce7f3ccb4
2015-08-29 · TA获得超过1950个赞
知道大有可为答主
回答量:2299
采纳率:0%
帮助的人:1883万
展开全部
*.Controls;只获取当前容器一下的第一级控件,不会获得子控件的控件!!
追问
所以我用两次循环遍历cc是获取所有一级控件,然后一级控件包括GroupBox等容器,于是我在获取容器空间本身,又用subcons获取这个容器中的所有控件并且遍历子控件。我窗体设计的只有两层,并且同样在同一个group里面的三个文本框只有一个获取不到
josion_John
2015-08-29
知道答主
回答量:29
采纳率:0%
帮助的人:17.7万
展开全部
贴代码看看
更多追问追答
追问
代码在问题补充里
追答
代码逻辑看上去没有问题,但是,你这个嵌套循环只能循环到第二层的容器控件,如果你在一个容器控件(比如:panel)里面再嵌套一个(或者多个)容器控件,那么第三层之后嵌套的控件都是遍历不出来的,你看看有没有这个问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式