Скрытие формы без вызова метода FormClosing - PullRequest
2 голосов
/ 15 февраля 2012

У меня есть две формы, и я связал их так, что, когда вторая форма закрывается, первая тоже закрывается (используя метод FormClosing).

Проблема в том, что когда я хочу скрыть вторую форму, она автоматически закрывает первую. Есть ли способ, которым форма может быть скрыта без фактического вызова метода FormClosing?

Кажется, что метод FormClosing по-прежнему вызывается при использовании «Visible = false» и «Hide ()».

Спасибо.

Ответы [ 5 ]

2 голосов
/ 22 февраля 2012

Я изменил свою программу, чтобы она запускалась, как показано ниже:

        MainForm mainForm = new MainForm();
        mainForm.Show();
        Application.Run();

Вместо:

        Application.Run(new MainForm());

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

    private void ImageSelect_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (e.CloseReason == CloseReason.UserClosing)
        {
            if (DialogResult.No == MessageBox.Show("Are you sure you wish to exit?", "Exit Confirmation", MessageBoxButtons.YesNo))
                e.Cancel = true;
            else { Application.Exit(); }
        }
    }

Приложение теперь можно закрыть из любой формы приложения.

2 голосов
/ 15 февраля 2012

вызовите Hide() в форме или Visible=false, но в этом случае форма остается в памяти, а все ресурсы, выделенные этой формой, остаются в памяти.

Если это проблема для вас, я бы предложил пересмотреть вашу архитектуру.

0 голосов
/ 15 февраля 2012

Если вы используете формы WinForms, метод Hide () должен быть тем, который вы ищете.

0 голосов
/ 15 февраля 2012
this.Hide();

или

this.Visible = false;
0 голосов
/ 15 февраля 2012

Вы хотите использовать form.Hide().

Это просто скрывает форму от пользователя, фактически не закрывая ее.

...