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

C# 最小化窗体关闭以防止计算机关闭,c#,.net,winforms,visual-studio-2008,.net-3.5,C#,.net,Winforms,Visual Studio 2008,.net 3.5,我有一个简单的基于表单的.NET应用程序。在本文中,我捕获FormClosing事件以防止关闭应用程序,而不是最小化它。应用程序应始终处于打开状态。以下是我使用的代码: private void Browser_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true; this.WindowState = FormWindowState.Minimized; thi

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

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

    }

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

更改它,使其不总是取消,而是首先查看
e.CloseReason
以了解调用事件的原因


有关有效值的枚举,请参见MSDN页面。它包括一个名为
WindowsShutDown
,您可能还想看看
taskmanager关闭
(如果有人试图用taskmanager关闭应用程序,他们可能真的希望它关闭,而不仅仅是最小化)。

我找到了另一个解决方案。您可以禁用表单的关闭按钮,以便可以以默认方式处理表单关闭事件

禁用关闭按钮的代码:

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

就这样。非常感谢你的帮助