7

私のアプリケーションでは、ユーザーには最初にログイン画面が表示され、ログイン後に表示されるフォームにはメニュー バーがあります。そのメニュー バーには、「ログアウト」と「終了」の 2 つの項目があります。ユーザーがログアウト オプションを選択した場合は、前述のログイン画面に戻りたいと思います。ユーザーが代わりに「終了」をクリックすることを決定した場合、ユーザーが終了したいかどうかを確認します。残念ながら、ユーザーがウィンドウの「X」ボタンをクリックしてプログラムを閉じることを決定すると、現在のフォームのみが閉じられます。私の意図は、アプリケーション全体を閉じることです。

基本的に、フォームを閉じるイベントをインターセプトして現在のアプリケーションを終了する方法を知る必要があります。

ログアウト項目の下 ストリップコードは次のとおりです。

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

出口項目の下ストリップコードは次のとおりです。

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

そして、終了ボタンをクリックすると、現在のフォームが閉じられ、アプリケーション全体を閉じたい

4

6 に答える 6

18

これは、[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;
   }
}   
于 2013-07-22T19:50:38.297 に答える
2

間違っていなければ

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
   //You may decide to prompt to user
   //else just kill
   Process.GetCurrentProcess().Kill();
} 
于 2013-07-22T19:56:21.633 に答える
-1

これを試して:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    // You may decide to prompt to user else just kill.
    Process.GetCurrentProcess().Goose();
} 
于 2016-02-08T20:31:41.760 に答える