利用反射动态(运行时)加载窗体- cwf软件开发平台- 博客园

文件名,窗体名,参数
        private int Run_WinForm(string filename, string myfrmname, DataTable mydtmsg)
        {
            Assembly vAssembly = null;
            if (string.IsNullOrEmpty(filename) == true)
            {
                vAssembly = Assembly.GetExecutingAssembly();
            }
            else
            {
                if (System.IO.File.Exists(filename) == true)
                {
                    vAssembly = Assembly.LoadFrom(filename);
                }
                else
                {
                    cwfIosys.ioCtrl.MsgShow("程序集文件不存在!\r\n" + filename);
                    return 0;
                }
            }
            System.Globalization.CultureInfo gcnull = null; object[] objnull = null;
            Binder binull = null;
            object vTemp = null;
            object[] objstr = new object[1];
            objstr[0] = mydtmsg;
            vTemp = vAssembly.CreateInstance(myfrmname, true, BindingFlags.Default, binull
                             , objstr, gcnull, objnull);
            try
            {
                if (vTemp == null && appCtrl.appAssembly != null)
                {
                    vAssembly = appCtrl.appAssembly;
                    vTemp = vAssembly.CreateInstance(myfrmname, true, BindingFlags.Default, binull
                     , objstr, gcnull, objnull);
                }
                else
                {
                    if (appCtrl.appAssembly == null)
                    {
                        cwfIosys.ioCtrl.MsgShow("appCtrl.appAssembly is Null"
                            + "\r\n  Assembly vAssembly"
                            + "\r\n  vAssembly = Assembly.GetExecutingAssembly();" +
                            "run_winform!", "No vAssembly!", 2, 1500);
                    }
                }
            }
            catch (Exception cw)
            {
                if (cw.Message.IndexOf(myfrmname) >= 0)
                {

                    vTemp = vAssembly.CreateInstance(myfrmname);
                }
                else
                {
                    MessageBox.Show(cw.Message);
                    cwfIosys.ioCtrl.MsgShow(cw.Message + "\r\n" + cw.GetBaseException().ToString());
                }
            }
            if (vTemp != null)
            {
                //  ((System.Windows.Forms.Form)vTemp).MdiParent = appCtrl.appMainfrom;
                ((System.Windows.Forms.Form)vTemp).Show();
                // ((System.Windows.Forms.Form)vTemp).Name = wname.Replace(".", "_");
                //    appCtrl.appMainfrom.Load_WorkToolStripStatus(wname.Replace(".", "_"), title);
                //   ((System.Windows.Forms.Form)vTemp).FormClosed += new System.Windows.Forms.FormClosedEventHandler(appCtrl.frmsys_FormClosed);
                return 1;
            }
            return 0;
        }

posted on 2010-06-17 09:48 阅读(3)  

郑重声明:资讯 【利用反射动态(运行时)加载窗体- cwf软件开发平台- 博客园】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——