zoukankan      html  css  js  c++  java
  • 反射动态调用、实例化窗体的方法


    /// <summary>  
            /// 打开新的子窗体  
            /// </summary>  
            /// <param name="strName">窗体的类名</param>  
            /// <param name="AssemblyName">窗体所在类库的名称</param>   
            public static void CreateForm(string strName, string AssemblyName)
            {
                string path = AssemblyName;//项目的Assembly选项名称  
                string name = strName; //类的名字  
                Form doc = (Form)Assembly.Load(path).CreateInstance(name);
                doc.Show();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                //获取单击的Button名称
                string btnname = ((Button)sender).Text;
                CreateForm("WindowsFormsApplication1." + btnname, "WindowsFormsApplication1");
            }

    有了上面的方法,只要我们的用户控件Text和窗体的类名一样就可能实现动态加载了,当然如果有的同志说我的Text要用汉字怎么办,那就再换个属性啊,比如Name或者是其他属性都可以。总之肯定比你一个一个的去写要方便很多。

    如果你是使用的子窗体的方式,而不是用户控件还可以使用下面方法判断是否已打开

    /// 防止子窗体再度打开  
            /// </summary>  
            /// <param name="p_ChildrenFormText"></param>  
            /// <param name="MdiParentForm"></param>  
            /// <returns></returns>  
            public static bool ShowChildForm(string p_ChildrenFormText, Form MdiParentForm)  
            {  
                int i;  
                //依次检测当前窗体的子窗体  
                for (i = 0; i < MdiParentForm.MdiChildren.Length; i++)  
                {  
                    //判断当前子窗体的Text属性值是否与传入的字符串值相同  
                    if (MdiParentForm.MdiChildren.Name == p_ChildrenFormText)  
                    {  
                        //如果值相同则表示此子窗体为想要调用的子窗体,激活此子窗体并返回true值  
                        MdiParentForm.MdiChildren.Activate();  
                        return true;  
                    }  
                }  
                //如果没有相同的值则表示要调用的子窗体还没有被打开,返回false值  
                return false;  
            }


  • 相关阅读:
    CentOS7安装MySQL5.7
    .gdbinit文件配置
    Linux 动态库加载
    GDB常用调试命令(二)
    git删除缓存区中文件
    git添加空文件夹
    Linux 打开core dump功能
    C++ 预处理器
    C++ 模板
    C++ 命名空间
  • 原文地址:https://www.cnblogs.com/zhaoshujie/p/9594770.html
Copyright © 2011-2022 走看看