Office-C#-Winform利用Assembly反射动态打开项目中已存在的窗体

复制代码
         //添加对Reflection程序集引用
         using System.Reflection;
 
        // 引用窗体创建方法CreateForm,传入参数
         private void btnCreateForm_Click(object sender, EventArgs e)
         {
              //项目中已有的窗体名称、项目命名空间
             CreateForm("testForms", "UseAssemblyToCreateForms");
         }
         /// <summary>
         /// 1.stringFormName,要创建的窗体名称
         /// 2.path,引用程序集名称
         /// 3.Assembly.Load(path),该方法加载程序集
         /// 4.Assembly.Load(path).CreateInstance(strName),通过传入窗体名称创建窗体,窗体名称需为 :程序集路径.窗体名称
         /// </summary>
         /// <param name="stringFormName"></param>
         /// <param name="path"></param>
         private void CreateForm(string stringFormName,string  path)
         {
                  string   strName = "UseAssemblyToCreateForms.UI." + stringFormName;
                  string assemblyPath =  path;
 
                   Form form =(Form) Assembly.Load(assemblyPath).CreateInstance(strName);
                   form.Show();
         }                     
复制代码

 

复制代码
        //方法二:
        private void button2_Click(object sender, EventArgs e)
        {


            Assembly assem = Assembly.Load(this.GetType().Namespace.ToString());
            //取得当前Form名称
            string formname = this.GetType().Namespace.ToString() + "." + "Form_TreeView";
            //对Form进行实例化(formname = 命名空间.项目中已有的窗体名称)
            Form frm = (Form)assem.CreateInstance(formname);
            frm.ShowDialog();

        }
复制代码

 

posted on   Violin_Huang  阅读(214)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示