Забавная ситуация имеется:
Создается С# проект в VS.NET 2003. Windows Application.
В нем присутствуют:
Форма, кнопка.
Обработчик кнопки такой: (Вариант 1)
private void button1_Click(object sender, System.EventArgs e)
{
Application.Exit();
}
При нажатии на кнопу приложение нормально завершается.
Если в обработчике написать строку this.Close(); приложение тоже завершится.
Но вот в чем вопрос.
Если обработчик имеет вид: (Вариант 2)
private void button1_Click(object sender, System.EventArgs e)
{
Application.Exit();
MessageBox.Show("test");
}
Не закрывается форма. Если добавляем this.Close() первой строкой — форма закрывается,
но процесс в памяти живет.
Если обработчик имеет вид: (Вариант 3)
private void button1_Click(object sender, System.EventArgs e)
{
this.Close();
return;
MessageBox.Show("test");
}
Форма закрывается и приложение тоже завершается.
При таком виде обработчика: (Вариант 4)
private void button1_Click(object sender, System.EventArgs e)
{
Application.Exit();
return;
MessageBox.Show("test");
}
Все завершается тоже.
(Вариант 5)
private void button1_Click(object sender, System.EventArgs e)
{
this.Close();
Application.Exit();
return;
MessageBox.Show("test");
}
Такой вариант тоже работает.
Какой из последних трех вариантов более корректен? (подозреваю последний)
и почему при отсутствии return не происходит завершение программы. (Вариант 2)
12.11.04 12:56: Перенесено модератором из '.NET' — AndrewVK