【问题标题】:prohibit user from closing the form禁止用户关闭表单
【发布时间】:2014-03-12 11:38:53
【问题描述】:

我有一个名为Form_Main 的主窗体,当有人想要关闭它时,它将关闭整个应用程序(整个应用程序我的意思是退出其他窗体)。因此,我准备了一个是/否消息框,询问用户是否真的想退出表单。这是我所在的位置:

private void Form_Main_FormClosed(object sender, FormClosedEventArgs e)
{
      DialogResult result = MessageBox.Show("Are you sure?", "Confirmation", MessageBoxButtons.OKCancel);
      if (result == DialogResult.OK)
      {
          Environment.Exit(1);
      }
      else
      {
          //does nothing
      }
}

“确定”按钮有效。但是当用户单击“取消”时,Form_Main 被关闭,但应用程序仍在运行(其他窗体保持不变)。我应该用什么替换//does nothing

【问题讨论】:

    标签: c# forms


    【解决方案1】:

    使用FormClosing事件(而不是FormClosed),然后设置e.Cancel = true

    private void Form_Main_FormClosing(object sender, FormClosingEventArgs e)
    {
        var result = MessageBox.Show("Are you sure?", "Confirmation", MessageBoxButtons.OKCancel);
    
        e.Cancel = (result != DialogResult.OK);
    }
    

    FormClosing 事件发生在表单实际关闭之前,因此您仍有机会取消它。当您到达FormClosed 事件时,为时已晚。

    【讨论】:

    • 当然,如果你在FormClosing,就不用Environment.Exit()进一步加急了,是吗?
    • 在 FormClosing 中,Environment.Exit(1) 出现错误
    • 那你可能读错了。我认为这会有问题。
    • 我将创建一个 FormClosed 事件来放置 Environment.Exit(1)
    猜你喜欢
    • 1970-01-01
    • 2016-05-29
    • 2010-09-06
    • 2012-08-24
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多