C# 遍历控件,遍历某EXE中的所有窗体以及窗体上的控件

大家好,我是赤道上的小熊,最近在做一个二开设计平台,要实现遍历某EXE中的所有窗体以及窗体上的控件,下面的实现方式不仅可以找到窗体中已经存在的控件,通过程序动态创建的控件也可以遍历到(例如:Button button2 = new Button()),希望对大家所有帮助。

  • PS:该实现方式必须和要寻找的窗体在同一项目中
  //获取EXE中的控件值
        string strRes = "";
        private void GetControls()
        { 
            strRes = "";
            System.Reflection.Assembly ase = System.Reflection.Assembly.LoadFile(Application.ExecutablePath);//.net中的反射 Application.ExecutablePath exe所在路径 
            Type[] types = ase.GetTypes();
            foreach (Type item in types)  //获取程序中的form窗体
            { 
                if (item.BaseType.Name == "Form") //寻找类型为Form
                { 
                    init("frmDemo", "frmDemo." + item.Name);
                }


            }
            MessageBox.Show(strRes, "");
        }

        /// <summary>
        /// 获取窗体中的控件
        /// </summary>
        /// <param name="strNameSpace">命名空间</param>
        /// <param name="strNameSpaceFormID">命名空间.窗体ID</param>
        private void init(string strNameSpace, string strNameSpaceFormID) 
        { 

            Form childForm = (Form)System.Reflection.Assembly.Load(strNameSpace).CreateInstance(strNameSpaceFormID);
            foreach (Control item in childForm.Controls) //循环窗体中的控件
            { 
                if (item is TextBox)
                { 

                    TextBox txtbox = (TextBox)item;
                    strRes = strRes + childForm.Name.ToString() + "—" + txtbox.Name.ToString() + " ";
                }
                if (item is Button)
                { 
                    Button btn = (Button)item;
                    strRes = strRes + childForm.Name.ToString() + "—" + btn.Name.ToString() + " ";

                }

                if (item is ComboBox)
                { 
                    ComboBox com = (ComboBox)item;
                    strRes = strRes + childForm.Name.ToString() + "—" + com.Name.ToString() + " ";

                }
            }           
        }
    原文作者:赤道上的小熊
    原文地址: https://blog.csdn.net/aixiaoxiong/article/details/105791473
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞