代码之家  ›  专栏  ›  技术社区  ›  Timo Haberkern

最小化窗体关闭以防止计算机关闭

  •  4
  • Timo Haberkern  · 技术社区  · 16 年前

    我有一个简单的基于表单的.NET应用程序。在本文中,我捕获FormClosing事件以防止关闭应用程序,而是最小化它。应用程序应始终处于打开状态。以下是我使用的代码:

    private void Browser_FormClosing(object sender, FormClosingEventArgs e)
        {
           e.Cancel = true;
           this.WindowState = FormWindowState.Minimized;
           this.ShowInTaskbar = true;
    
        }
    

    现在的问题是,这会阻止具有非管理员权限的用户关闭计算机。我能做些什么让电脑关闭,用户不能关闭应用程序?

    2 回复  |  直到 16 年前
        1
  •  7
  •   Hans Olsson    16 年前

    改变它,使它不总是取消,而是首先看 e.CloseReason 看看为什么要调用此事件。

    有关详细信息,请参阅MSDN页 CloseReason 有效值的枚举。它包括一个叫做 WindowsShutDown ,你可能想看看 TaskManagerClosing 同时(如果有人试图用taskmanager关闭应用程序,他们可能真的希望它关闭,而不仅仅是最小化)。

        2
  •  4
  •   Timo Haberkern    16 年前

    我找到了解决这个问题的另一个办法。您可以禁用窗体的关闭按钮,这样就可以以默认方式处理窗体关闭事件

    关闭按钮禁用代码:

    protected override CreateParams CreateParams
        {
            get
            {
                CreateParams param = base.CreateParams;
                param.ClassStyle = param.ClassStyle | 0x200;
                return param;
            }
        }