2013-07-22 2 views
1

В моем приложении пользователю впервые представлен экран входа в систему, а в форме, которая появляется после входа в систему, есть панель меню. В этой строке меню находятся два элемента: «выйти из системы» и «выйти». Если пользователь выбирает вариант выхода из системы, я хочу, чтобы он вернулся к вышеупомянутому экрану входа в систему. Если пользователь вместо этого решил нажать «выйти», я предлагаю пользователю, уверены ли они, что они хотят выйти. К сожалению, когда пользователь решает закрыть программу, нажав кнопку «X» в окне, она закрывает только текущую форму. Мое намерение заключалось в том, чтобы закрыть все Приложение.Close Form Button Event

В принципе, мне нужно знать, как выйти из текущего приложения, перехватывая событие закрытия формы.

Под Выход элемента Strip обозначение:

private void logoutToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    Form_Login log = new Form_Login(); 
    this.Close(); 
    log.Show(); 
} 

Под Выход элемента Strip Код Is:

private void exitToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    if (MessageBox.Show("Are You Sure To Exit Programme ?","Exit",MessageBoxButtons.OKCancel)== DialogResult.OK) 
    { 
     Application.Exit(); 
    } 
} 

И когда я нажимаю кнопку Выход Закрыть текущую форму, и я хочу Закрыть Целевая заявка

+0

Я понятия не имею, что спрашивают здесь. – Dan455

+0

.... Знаки пунктуации? – zimdanen

+0

Теперь мы смущены –

ответ

11

Это должно обрабатывать случаи нажатия на [x] или ALT + F4

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (e.CloseReason == CloseReason.UserClosing) 
    { 
     DialogResult result = MessageBox.Show("Do you really want to exit?", "Dialog Title", MessageBoxButtons.YesNo); 
     if (result == DialogResult.Yes) 
     { 
      Environment.Exit(0); 
     } 
     else 
     { 
     e.Cancel = true; 
     } 
    } 
    else 
    { 
     e.Cancel = true; 
    } 
} 
+0

okai, если я нажму кнопку выхода из меню, он также даст мне окно с сообщением –

+0

Позвольте мне сделать немного исследований, и я вернусь к вам. Я знаю, что есть способ определить, закрываются ли они с помощью кнопки [X] или даже ALT + F4 – JBelter

+0

jBelter. Ближайшее, что вы можете получить, это использовать FormClosingEventArgs. – Sayse

2

Если не ошибаюсь

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    //You may decide to prompt to user 
    //else just kill 
    Process.GetCurrentProcess().Kill(); 
} 
+6

-1 для одного из * наименее * изящных способов выйдите из программы – tnw

+1

@tnw Хорошо может объяснить вам, как вы прекратите приложение, в котором работает более 100 'Foreground Threads'? –

+0

['Environment.Exit (0)'] (http://msdn.microsoft.com/en-us/library/system.environment.exit.aspx) приходит на ум. Где вы даже поняли, что сила, закрывающая текущий процесс, считается изящной или даже хорошей идеей? Я думаю, вам будет трудно найти подходящий вариант для этого. – tnw

-1

Попробуйте это:

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    // You may decide to prompt to user else just kill. 
    Process.GetCurrentProcess().Goose(); 
} 
1
private void mainForm_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (MessageBox.Show("This will close down the whole application. Confirm?", "Close Application", MessageBoxButtons.YesNo) == DialogResult.Yes) 
    { 
     MessageBox.Show("The application has been closed successfully.", "Application Closed!", MessageBoxButtons.OK); 
     System.Windows.Forms.Application.Exit(); 
    } 
    else 
    { 
     this.Activate(); 
    } 
} 
+1

Пожалуйста, добавьте больше описания и/или информации о вашем ответе и о том, как он решает заданную проблему, чтобы другие могли легко понять это, не прося разъяснений – koceeng