如何枚举 winform 中所有的组件?

csharpbuilder 2003-08-19 07:55:10
我们知道,使用 Controls 集合可以访问 winform 中所有的控件;那么,如何枚举 winform 中的组件呢?
...全文
89 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
csharpbuilder 2003-09-05
  • 打赏
  • 举报
回复
只好结贴吧
csharpbuilder 2003-08-22
  • 打赏
  • 举报
回复
有人知道么?
xixigongzhu 2003-08-22
  • 打赏
  • 举报
回复
只要你按照一般的定义来定义,微软的内部程序都会加进去的。
xfqiu 2003-08-22
  • 打赏
  • 举报
回复
所有的Control都在属性Controls里;.............前提是已添加到Controls
所有的Component都在字段components里;.........前提是已添加到Components
xixigongzhu 2003-08-22
  • 打赏
  • 举报
回复
所有的Control都在属性Controls里;
所有的Component都在字段components里;
所以这样就可以了:
ArrayList list = new ArrayList();
getControls(this, list);
for (int i = 0; i < components.Components.Count; i++) {
list.Add(components.Components[i]);
}

static void getControls(Control container, ArrayList list) {
for(int i = 0; i < container.Controls.Count; i++) {
list.Add(container.Controls[i]);
}
for(int i = 0; i < container.Controls.Count; i++) {
Control c = container.Controls[i];
if (c.Controls.Count > 0) {
getControls(c, list);
}
}
}
这样就可以得到Form所有定义的Component了。
Jim3 2003-08-21
  • 打赏
  • 举报
回复
System.Windows.Forms.Form也许没有这样的东西

不能确定,请比较清楚的人作答

csharpbuilder 2003-08-21
  • 打赏
  • 举报
回复
楼上的,不行哦.你试过了么?
xixigongzhu 2003-08-20
  • 打赏
  • 举报
回复
是不是得到继承Control的所有控件:
Type t = typeof(System.Windows.Forms.Control);
Type[] types = t.Assembly.GetTypes();
for (int i = 0; i < types.Length; i++) {
if (types[i].IsSubclassOf(t)) {
Console.WriteLine(types[i]);
}
}
Jim3 2003-08-20
  • 打赏
  • 举报
回复
Form.components.Components
csharpbuilder 2003-08-20
  • 打赏
  • 举报
回复
不是这个意思,我是说,得到窗体中等所有组件: Component
继承 Component 的所有组件,如 menuitem,FileSystemWatcher,Timer 等.
csharpbuilder 2003-08-19
  • 打赏
  • 举报
回复
楼上的,看清楚喽.
jiezhi 2003-08-19
  • 打赏
  • 举报
回复
foreach(Control c in this.Controls)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧