Как скрыть форму в трей только при закрытии (крестиком)

private void mainForm_FormClosing(object sender, FormClosingEventArgs e)
    {            
        save_data();
        this.WindowState = FormWindowState.Minimized;
        e.Cancel = true;           
    }

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

if (sender (...) == крестик на форме) e.Cancel = true;

Подскажите как правильно прописать это условие :)


Ответы (1 шт):

Автор решения: aepot

Всегда интересуйтесь что за аргументы FormClosingEventArgs у обработчика события. У разных обработчиков они разные бывают. В них обычно много полезного.

private void mainForm_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.UserClosing)
    {
        save_data();
        this.Hide(); // чтобы обратно показать, используйте this.Show();
        e.Cancel = true;
    }
}
→ Ссылка