Установка формы в качестве дочернего элемента MDI основной формы?

У меня есть приложение основной формы, которое представляет собой контейнер MDI. Пользователь может нажать кнопку, чтобы открыть новую форму (не как дочерний элемент MDI), а затем из этой новой всплывающей формы я хочу иметь кнопку, которая создает другую форму в качестве дочернего элемента MDI.

В основной форме у меня есть:

ResSelectForm resSelectForm = new ResSelectForm();
resSelectForm.Show();

Итак, в появившейся форме resSelect, когда пользователь нажимает кнопку OK, у меня есть:

ImageForm imageForm = new ImageForm();
imageForm.MdiParent = Mainform; // doesn't work
imageForm.Show();

Я получаю следующую ошибку:

Ошибка CS0119 «MainForm» — это недопустимый тип в данном контексте.


person aNobody    schedule 04.02.2016    source источник
comment
Какие ошибки вы получаете? Являются ли они ошибками времени компиляции или ошибками времени выполнения?   -  person Sumner Evans    schedule 04.02.2016
comment
Ошибка CS0119 «MainForm» — это недопустимый тип в данном контексте.   -  person aNobody    schedule 04.02.2016


Ответы (2)


Проблема, с которой вы столкнулись, заключается в том, что вы пытались получить доступ к типу Mainform, а не к его экземпляру. Чтобы решить эту проблему, вам нужно будет передать экземпляр конструктору ResSelectForm следующим образом:

ResSelectForm resSelectForm = new ResSelectForm(this);

Затем в конструкторе ResSelectForm сделайте следующее:

private Mainform _mainform; //Variable to use throughout the class

public ResSelectForm(Mainform mainform)
{
    _mainform = mainform;
}

Наконец, всякий раз, когда вам нужно получить доступ к Mainform, вы получите доступ к переменной, в вашем случае так:

imageForm.MdiParent = _mainform;
person TheLethalCoder    schedule 04.02.2016

Я просто использовал для этого диалоговое окно, так как это по сути одно и то же: https://www.youtube.com/watch?v=8aDsXyiBLsI

person aNobody    schedule 04.02.2016
comment
Обобщите решение в своем ответе, чтобы будущие пользователи могли извлечь пользу из ваших выводов. - person Sumner Evans; 04.02.2016