c# - 关闭表单按钮事件

标签 c# winforms

在我的应用程序中,首先向用户显示登录屏幕,登录后显示的表单有一个菜单栏。

该菜单栏上有两个项目:“注销”和“退出”。如果用户选择注销选项,我希望它返回到上述登录屏幕。如果用户决定单击“退出”,我会提示用户是否确定要退出。

不幸的是,当用户决定通过单击窗口上的“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 the programme ?","Exit",MessageBoxButtons.OKCancel)== DialogResult.OK)
     {
         Application.Exit();
     }
 }

当我单击退出按钮时,它会关闭当前表单,我想关闭整个应用程序。

最佳答案

这应该处理点击 [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;
   }
}   

关于c# - 关闭表单按钮事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17796151/

相关文章:

c# - 使用别名时无法隐式转换类型错误

c# - IComparer无法正常工作

c# - 单元测试 : How to return value asynchronously from mocked interface

WinForms 对话框窗体——关闭还是处置?

c# - 有没有一种在 Windows 窗体上播放 AVI 视频的简单方法?

.net - 开源 Windows 窗体应用程序的建议控件?

c# - 如何检测 Windows 是否要休眠或挂起?

c# - 尝试修改字典时出现异常

c# - 等待使用 AutoResetEvent 处理事件

c# - 限制基类参数的类型