2013-03-12 1 views
0

Посмотрите на ответ question. Я пробовал второй комментарий в ответе. Проблема заключается в «Application.OpenForms [0]». Это дает мне ошибку: «Форма, которая была указана как MdiParent для этой формы, не является MdiContainer. Имя параметра: значение». Затем я расширяюсь, чтобы увидеть, сколько форм открыто. Я получил потрясающий результат, который я ОТКРЫЛ СЕЙЧАС. Существуют две открытые формы. Один из них - это LoginForm, который у меня есть. Hide(); при успешном входе в систему. Когда я изменил его на это. Close(); приложение закрыто. Почему он все еще открыт и как я могу закрыть его, не закрывая приложение?MDI Родительская форма: - настройка Родитель (возможно, только название дублируется)

+0

Возможный дубликат [Как закрыть форму входа и показать основную форму без закрытия моего приложения?] (Http://stackoverflow.com/questions/4759334/how-can-i-close-a-login- form-and-show-the-main-form-without-my-application-closi) –

ответ

0

Во-первых, если приложение закрывается полностью, когда вы закрываете форму, это скорее всего потому, что вы закрываете основной формы, то есть один указано в:

Application.Run(new MainForm()); 

Ваш LoginForm, что вы закрываете эта основная форма?

Во-вторых, если форма должна быть MdiParent, она должна иметь свойство IsMdiContainer в true.

В-третий, я бы не стал полагаться на Application.OpenForms [0], вместо того, чтобы перебирать их и выбрать правильный по имени, как это:

FormCollection fc = Application.OpenForms; 

foreach (Form frm in fc) 
{ 
if (frm.Name == "Main Form") 
    do what you need to do... 
} 

Надеется, что это помогает.

+0

Да. Основной формой является моя LoginForm. Но это не MdiParentForm. MdiParent открывается после успешного входа. И ваше третье объяснение: я попробовал это, например. Application_Name.MdiParentForm_Name. Но не получилось. Показывает ошибку «Application_Name.MdiParentForm_Name - это тип, который недопустим в данном контексте». – DhavalR

+0

Я бы изменил ваше приложение, чтобы форма MdiParent была основной формой, которая скрыта для начала, пока пользователь не завершит вход в систему, после чего вы закроете форму входа. Я не уверен, откуда вы получаете Application_Name? Это не то, что я предлагал. Application.OpenForms - это коллекция OpenForms, OpenForm имеет свойство Name. Возможно, отредактируйте свой вопрос, чтобы проиллюстрировать, чего вы пытаетесь достичь? – andyhasit

+0

На самом деле я хотел закрыть форму входа. Это была главная цель, которая была достигнута. Теперь возникает вопрос, как установить MdiParent формы (т. Е. Form2), которая открывается из Form1, которая является дочерней. Я закрываю Form1 и открываю Form2. Основная цель вопроса решена (т. Е. Закрыть Login_Form, который отображается в Application.OpenForms [index]). Но как вы сказали, «итерации через них и выбрать правильный по имени», как использовать свойство Name OpenForms? – DhavalR