Рейтинг:
2
OriginalGriff
Вы все делаете неправильно: ваш код пытается открыть экземпляр Form1 в существующем экземпляре Form2, и это не сработает (потому что Form2 является дочерним элементом MDI) и в любом случае не то, что вы хотели (потому что вы хотите, чтобы Form1 был дочерним элементом существующего контейнера MDI, а не Form2).
Что вам на самом деле нужно сделать в вашем обработчике кнопок Form2, так это сказать родителю MDI, что он должен открыть новую Form1 (или перепрофилировать существующую, это зависит от него, а не от экземпляра Form2, который даже не должен знать, что Form1 вообще существует!)
Это звучит сложно, но на самом деле это не так - он использует тот же механизм событий, что и все элементы управления и формы: Передача информации между двумя формами, Часть 2: Ребенок-Родитель[^] показывает, как это делается.
Хотя, честно говоря, MDI-приложений в наши дни немного и далеко, они были устаревшими для новых приложений давным-давно, еще во времена Win95 и Win 98, в пользу TDI (интерфейс документа с вкладками), который, как правило, считается гораздо более простым для понимания и использования пользователями. Вероятно, вам не следует строить новые, если у вас нет очень, очень веских причин для этого! (И даже тогда "гибкое панельное" приложение live Visual Studio, скорее всего, будет лучшим решением, чем MDI).
Iulian Mihu
Form1 существует, Form2 существует и MainForm (с ToolStripMenu) ... то, что вы хотите от меня: в форму 2, 1 кнопка, чтобы открыть форму 1.
OriginalGriff
Похоже, это то, о чем вы просите, да.
"Родитель" всегда действует как "посредник" между дочерними формами (которые не должны знать, что они вообще существуют)-поэтому вы нажимаете кнопку Form2, она запускает событие, которое обрабатывает родитель, решает, что с ним делать, и либо открывает новый экземпляр, либо активирует существующий Form1.
Iulian Mihu
Есть ли шанс сделать это с пустотой ? Теперь я пытаюсь вызвать пустоту из MainForm, чтобы открыть кнопку Form1 .... пока безуспешно.
OriginalGriff
Перейдите по ссылке, которую я вам дал, и посмотрите, как это работает. Это точно такой же процесс, и вы не делаете много смысла в своих ответах - помните, что мы не можем видеть ваш экран, поэтому мы получаем только то, что вы печатаете для работы.