我希望通过Alt + F4不会关闭该窗体,但是如果从同一窗体调用Application.Exit()this.Close,则应将其关闭。

我尝试了CloseReason.UserClosing,但仍然没有帮助。

最佳答案

如果您只需要过滤掉Alt + F4事件(使关闭框,this.Close()Application.Exit()保持点击状态,就像往常一样),那么我可以提出以下建议:

  • 设置表单的 KeyPreview true的属性;
  • 连接表单的 FormClosing KeyDown 事件:
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (_altF4Pressed)
        {
            if (e.CloseReason == CloseReason.UserClosing)
                e.Cancel = true;
            _altF4Pressed = false;
        }
    }
    
    private bool _altF4Pressed;
    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Alt && e.KeyCode == Keys.F4)
            _altF4Pressed = true;
    }
    
  • 10-08 01:13