1

我对这段代码有疑问。你可以在这里找到所有的课程。

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

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;
}

在同一个网站上,有人说这个错误可以通过这种方式解决:

您必须在界面中声明属性 system.window.form parentForm

但我不明白怎么做。

4

1 回答 1

1

CreateInstance返回 a的机会很大,null因为它FileName是错误的(文件名或路径不正确)。

它返回 a 的结果nullform变量是null并且任何成员访问它(如form.MdiParent将导致 a NullReferenceException.

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

于 2011-12-03T23:07:17.250 回答