首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c# 未将对象引用设置到对象的实例解决方案

2013-11-26 
c# 未将对象引用设置到对象的实例[解决办法]看了,代码修改起来不算太难:public static void CreateForm(st

c# 未将对象引用设置到对象的实例
c# 未将对象引用设置到对象的实例解决方案
[解决办法]
看了,代码修改起来不算太难:

public static void CreateForm(string filePath,  string strName, string namespaceName, Form MdiParentForm)
        {
            int Index = strName.LastIndexOf(".");
            string formName = strName.Substring(Index + 1);
            if (!ShowChildForm(formName, MdiParentForm))
            {
                string path = namespaceName;
                string name = strName;
                Assembly assembly = Assembly.LoadFrom(filePath);
                Form fr = (Form)assembly.CreateInstance(name);
                fr.MdiParent = MdiParentForm;
                fr.Width = 1040;
                fr.Height = 755;
                fr.FormBorderStyle = FormBorderStyle.None;
                fr.StartPosition = FormStartPosition.Manual;
                fr.Show();
            }
        }

调用的时候

                if (this.TOOLS.SelectedNode.Name == "Work")
                {
                    CreateForm(Application.ExecutablePath,"WindowsApp" + "." + Program.userGroup, "WindowsApp", this);
                }
                else
                {
                    CreateForm(Application.ExecutablePath,"WindowsApp" + "." + this.TOOLS.SelectedNode.Name, "WindowsApp", this);
                }


原理是,你虽然改了exe文件的名字,但是assembly内部的自描述的manifest没有修改,manifest描述了assembly name等,Load是使用的assembly name,依旧是WindowsApp,修改成使用LoadFrom,从文件路径载入assembly。命名空间也依旧是WindowsApp,不随着你修改的文件名而改动。

热点排行