Нормализовать минимизированную форму win в событии Form_Closing - PullRequest
1 голос
/ 14 октября 2011

У меня есть тестовое приложение с несколькими формами, одно из которых - грубое меню. Когда я выбираю одну из других форм нажатием кнопки, форма меню минимизируется. Все хорошо.

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

private void Form2_Closing(object sender,System.ComponentModel.CancelEventArgs e)
{
    var menu = FormControl.MainMenu;
    menu.WindowState = FormWindowState.Normal;

    e.Cancel = false;
}

FormControl - мой класс, обеспечивающий открытие только одного экземпляра MainMenu. Код работает внутри события нажатия кнопки, но я не могу получить какое-либо событие закрытия / закрытия формы для запуска.

Ответы [ 2 ]

2 голосов
/ 14 октября 2011
form2.FormClosing += delegate 
                            {
                                var menu = FormControl.MainMenu;
                                menu.WindowState = FormWindowState.Normal; 
                            };
form2.ShowDialog(); //Or Show() whatever you wish.
1 голос
/ 14 октября 2011

хорошо, ваш комментарий о "Windowstate может не работать в этом конкретном событии" встревожил меня, поэтому я сделал простой тест:

  1. Создано Form1 и Form2
  2. Добавлена ​​кнопка и событие клика в Form1
  3. Добавлено событие FormClosed для Form2

Button1 Обработчик события клика:

private void button1_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.WindowState = FormWindowState.Normal;
    WindowState = FormWindowState.Minimized;
    form2.Show(this);//Passing Form1 as owner
    form2.Activate();
}

Form2 FormClosed обработчик событий:

private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
    this.Owner.WindowState = FormWindowState.Normal;//change state of owner form
}

Результат: После запуска программы - открывается Form1. После нажатия кнопки - Form1 сворачивается и появляется Form2. После закрытия Form2 - Form1 восстанавливается до нормального состояния.

Резюме: перепроверьте, действительно ли ваш Form2 ДЕЙСТВИТЕЛЬНО приписан к событию FormClosed или FormClosing.

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