MDIparent в Winform Application возвращает объектную ссылку, не установленную для экземпляра объекта - PullRequest
1 голос
/ 04 декабря 2011

У меня проблема с этим кодом.Вы можете найти все классы здесь .

Если я запускаю приложение и хочу открыть новую форму, я получаю эту ошибку:

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 в интерфейсе

, но я не понял, как.

1 Ответ

1 голос
/ 04 декабря 2011

Скорее всего, CreateInstance возвращает null, потому что FileName неверно (неверное имя файла или путь).

Результатом возврата null является то, что переменная form имеет значение null, и доступ к ней любого члена (как в form.MdiParent приведет к NullReferenceException.

Убедитесь, что имя файла указано правильно и что файл существует в пути, по которому производится поиск.

...