Winform Application中的MDIparent返回对象引用未设置为对象的实例

时间:2011-12-03 23:04:11

标签: c# plugins mdiparent

我的代码有问题。您可以找到所有课程here

如果我启动应用程序并且我想打开一个新表单,则会收到此错误:

  

NullReferenceException:未将对象引用设置为对象的实例。

主应用程序设置为isMDIcontainer = true;

现在我收到了这段代码中的错误:

private void PluginClick(object sender, EventArgs e)
{
    ToolStripMenuItem menu = (ToolStripMenuItem)sender;
    Plugin.PluginForm form = ((PluginInfo)menu.Tag).CreateInstance();
    form.MdiParent = this;   // Here is thrown the error
    form.Show();
}

Plugin.PluginForm只是一份扩展表格。这是CreateIstance()方法:

public PluginForm CreateInstance()
{
    if (!File.Exists(FileName))
        return null;

    Assembly ass = Assembly.LoadFile(FileName);
    foreach (Type type in ass.GetTypes())
    {
        if (type.BaseType == typeof(PluginForm))
        {
           return (PluginForm)Activator.CreateInstance(type);
        }
    }
    return null;
}

在同一个sebsite中有人说这个错误可能会以这种方式解决:

  

您必须在接口

中声明属性system.window.form parentForm

但我不明白怎么做。

1 个答案:

答案 0 :(得分:1)

CreateInstance返回null的可能性很高,因为FileName错误(文件名或路径不正确)。

返回null的结果是form变量为null且其上的任何成员访问权限(如form.MdiParent中所示)将导致{{1} }}

确保文件名正确并且文件存在于搜索路径中。