Показать обе формы вместе - PullRequest
0 голосов
/ 28 апреля 2010

У меня есть 2 формы Form1 и Form2, когда программа выполняется, я хочу, чтобы обе формы отображались, но Form2 с ShowDialog();, т. Е. Пользователь должен ответить на Form2 перед использованием Form1. Как мне этого добиться?

Form2 будет принимать пользовательский ввод и будет отображаться в Form1, поэтому мне нужно скрыть Form2 после того, как пользователь откликнется на Form2 или просто уничтожит ее.

Ответы [ 2 ]

3 голосов
/ 28 апреля 2010

Если вы используете ShowDialog, Form2 будет автоматически скрываться при нажатии OK или Отмена (при условии, что вы установили свойство DialogResult для любых соответствующих кнопок), но вам все равно придется его утилизировать. Вы можете сделать что-то вроде этого:

using (Form f2 = new Form2())
{
    // Populate it with existing data
    DialogResult result = f2.ShowDialog();
    // Use the result and any data within f2
}
1 голос
/ 28 апреля 2010

Я бы сделал это в такой форме:

public FormMain()
{
    InitializeComponent();
    //Visible should be set within InitializeComponent (or Designer)
    Visible = false;

    //Can't be done in constructor, or this.Close()
    //would lead to an exception.
    this.Load += (sender, e) =>
    {
        bool loginSuccessfull = false;

        using (var loginScreen = new FormLogin())
        {
            if (DialogResult.OK == loginScreen.ShowDialog())
            {
                //Maybe some other public function from loginScreen
                //is needed to determine if the login was successfull
                //loginSuccessfull = loginScreen.CheckCredentials();
                loginSuccessfull = true;
            }
        }

        if (loginSuccessfull)
        {
            Visible = true;
        }
        else
        {
            this.Close();
        }
    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...