Winform遍历窗口的所有控件(两种方式)
来源:互联网 发布:seo 锚文本 编辑:程序博客网 时间:2024/05/19 04:02
博文主要以下图中的控件来比较这两种方式获取控件的方式:
1. 最简单的方式:
private void GetControls1(Control fatherControl){ Control.ControlCollection sonControls = fatherControl.Controls; //遍历所有控件 foreach (Control control in sonControls) { listBox1.Items.Add(control.Name); }}结果:
获取的结果显示在右侧的ListBox中,可以发现没有获取到Panel、GroupBox、TabControl等控件中的子控件。
2. 在原有方式上增加递归:
private void GetControls1(Control fatherControl){ Control.ControlCollection sonControls = fatherControl.Controls; //遍历所有控件 foreach (Control control in sonControls) { listBox1.Items.Add(control.Name);if (control.Controls != null){GetControls1(control);} }}结果:
绝大多数控件都被获取到了,但是仍然有两个控件Timer、ContextMenuStrip没有被获取到。
3. 使用反射(Reflection):
private void GetControls2(Control fatherControl){ //反射 System.Reflection.FieldInfo[] fieldInfo = this.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); for (int i = 0; i < fieldInfo.Length; i++) { listBox1.Items.Add(fieldInfo[i].Name); }}结果:
结果显示所有控件都被获取到了。
0 0
- Winform遍历窗口的所有控件(两种方式)
- C# WinForm弹出窗口的两种方式
- WinForm两种方式实现控件拖动效果的比较
- c# winform 遍历TreeView控件(属性为checkbox时)中,所有被选中的节点
- 递归遍历winForm 上所有控件
- vb 遍历窗口下所有控件里的文字
- 集合详解(三)----Map的两种遍历方式
- Swing_JFream关闭窗口的两种方式
- HashMap遍历的两种方式
- 遍历数组的两种方式
- 遍历HashMap的常用两种方式
- HashMap遍历的两种方式
- HashMap遍历的两种方式
- HashMap遍历的两种方式
- HashMap遍历的两种方式
- hashmap遍历的两种方式
- HashMap遍历的两种方式
- HashMap遍历的两种方式
- centos hadoop 简单入门配置
- java调用shell脚本并传递参数
- SQL2005 provider: 命名管道提供程序 error: 40 无法打开到 SQL Server 的连接【申明:来源于网络】
- PAT 乙级 1060. 爱丁顿数(25)
- DEDECMS中添加kindeditor编辑器【只读模式】【空白导航】
- Winform遍历窗口的所有控件(两种方式)
- HttpClientUtil
- CSS3变形
- SQL 编程 -- 打印直角三角形, while经典案例 ,case end 经典案例
- CXF系列一:创建一个简单的web service
- memcached对key和value的限制
- HttpUtil
- RequestMapper参数属性解析(转)
- 算法提高 排列数