zoukankan      html  css  js  c++  java
  • 找到当前项目中的所有窗体的控件

     List<Form> names = new List<Form>();
                List<string> GridList = new List<string>();
                foreach (var type in this.GetType().Assembly.GetTypes())
                {
                    if (typeof(Form).IsAssignableFrom(type))
                    {
                        try
                        {
                            using (Form form = Activator.CreateInstance(type) as Form)
                            {
                                names.Add(form); //names.Add(form.name)
                            }
                        }
                        catch
                        {
                            Console.WriteLine(string.Format("类型为 {0} 的窗体没有无参的构造函数,无法获取其名称", type));
                        }
                    }
                }
    
                foreach (Form item in names)
                { 
                    foreach (var field in item.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public))
                    {
                        if (field.FieldType == typeof(GridControl))
                        {
                                GridList.Add(field.Name); //names.Add(form.name)
                        }
                    }
                }
                string s = "";
                foreach (var item in GridList)
                {
                    s += item+",";
                   
                }
                MessageBox.Show(s);

     第二种方法

                string path = Application.StartupPath + "\layout";
                List<Form> names = new List<Form>();
                List<string> GridList = new List<string>();
                foreach (var type in Assembly.GetExecutingAssembly().GetExportedTypes())
                {
                    if (typeof(Form).IsAssignableFrom(type))
                    {
                        try
                        {
                            using (Form form = Activator.CreateInstance(type) as Form)
                            {
                                names.Add(form); //names.Add(form.name)
                            }
                        }
                        catch
                        {
                            Console.WriteLine(string.Format("类型为 {0} 的窗体没有无参的构造函数,无法获取其名称", type));
                        }
                    }
                }
                foreach (Form item in names)
                {
                    foreach (var field in item.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public))
                    {
                        if (field.FieldType == typeof(GridControl))
                        {
                            //GridList.Add(field.Name); //names.Add(form.name)
                            GridControl Grid = new GridControl();
                            Grid.Name = field.Name;
                            try
                            {
                                Grid.MainView.RestoreLayoutFromXml(path + "\" + item.Name + "窗体的" + field.Name);
                            }
                            catch (Exception)
                            {
                            }
                        }
                    }
                }
  • 相关阅读:
    Nginx 日志切割-定时(附数据库数据备份)
    安装Nginx
    系统自适应限流
    黑名名单控制-sentinel
    热点参数的流量控制
    流量控制文档说明
    在Linux中输入命令时打错并按了enter
    配置maven环境
    项目层次展示
    寻找cmd的管理员运行
  • 原文地址:https://www.cnblogs.com/iowoi/p/12529632.html
Copyright © 2011-2022 走看看