Открытие новой формы без владельца? - PullRequest
3 голосов
/ 26 февраля 2012

Я создал приложение C # для Windows Forms, которое требует, чтобы пользователь входил в систему, используя форму с именем Form1, как показано ниже:

// This code is called from Form1

Form2 f = new Form2();
f.Show();

// Then Form1 does some finalization logic and closes itself

После входа в систему форма входа должна закрыться и основнойОкно приложения Form2 должно быть открыто.Но проблема, с которой я сталкиваюсь, заключается в том, что если я вызываю Form2 из Form1, Form1 становится владельцем Form2, поэтому закрытие Form1 закрывает обе формы и завершает приложение.

Как я могу вызвать Form2 так, чтобы она не зависела отForm1?

1 Ответ

3 голосов
/ 26 февраля 2012

Проблема не в владельце, а в том, что цикл сообщений Windows привязан к Form1.Когда Form1 закрывается, приложение закрывается.Посмотрите на ваш Main метод:

Application.Run(new Form1());

Самое простое решение - показать вашу форму входа в систему (при условии, что это форма входа в систему) в виде модального диалога, а затем начать цикл сообщений Windows в Form2:

static void Main()
{
    var form1 = new Form1();
    form1.ShowDialog();
    if (form1.LoginSuccessful)
    {
        Application.Run(new Form2());
    }
}

РЕДАКТИРОВАТЬ: Только что сделал поиск в Google и выглядит как альтернатива пользовательские ApplicationContext с.Никогда не работал с ними, хотя:

http://msdn.microsoft.com/en-us/library/system.windows.forms.applicationcontext.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...