Закрытие окна формы - PullRequest
0 голосов
/ 04 марта 2011

я разрабатываю приложение для Windows, используя c #.Я хочу закрыть приложение и показать новую форму после нажатия кнопки, я сделал это, но каждый раз, когда я нажимал кнопку, он показывает другие окна, и когда я иду в диспетчер задач, эта форма еще не запущена.Я хочу избежать этого.я использую функцию this.close () для выхода из формы.

1 Ответ

2 голосов
/ 04 марта 2011

Предположим, у вас есть Form1 и Form2.

Код в Form1 должен выглядеть примерно так:

public partial class Form1 : Form
{
    private Form2 _form2;

    public Form1()
    {
        InitializeComponent();
        _form2 = new Form2();
        _form2.VisibleChanged += new EventHandler(_form2_VisibleChanged);
    }

    void _form2_VisibleChanged(object sender, EventArgs e)
    {
        if (!_form2.Visible)
            Show();
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        e.Cancel = true;
        this.Hide();
        _form2.Show();
    }
}

И в Form2 все, что вам нужноЧтобы сделать это:

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
    Hide();
}

Конечно, вы должны подписаться на событие FormClosing в Form2, но если вы делаете это через дизайнера (Форма Properties, нажав на значок Events) просто вставьте эти две строки в метод, который он создает)

Что делает этот код?

In Form1:

  • Создание экземпляра Form2
  • В методе Form1_FormClosing все, что мы делаем, это скрываем форму вместо ее закрытия, когдапользователь закрывает его и показывает экземпляр Form2
  • Подпишитесь на событие VisibleChanged
  • Когда происходит событие, если экземпляр Form2 не виден, тогда Form1 появляется.

In Form2:

  • 2-й из вышеперечисленных шагов, но ничего не показывается.

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

...