最小化FormClose可防止计算机关闭

时间:2010-09-07 09:01:29

标签: 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;
       this.ShowInTaskbar = true;

    }

现在的问题是,这可以防止计算机为具有非管理员权限的用户提供支持。我可以做的任何事情,以便计算机能够关闭,用户无法关闭应用程序吗?

2 个答案:

答案 0 :(得分:7)

更改它以便它不会总是取消,而是首先查看e.CloseReason以查看为什么要调用该事件。

有关有效值的CloseReason枚举,请参阅MSDN页面。它包含一个名为WindowsShutDown的内容,您可能也想查看TaskManagerClosing(如果有人试图通过任务管理器关闭应用程序,他们可能真的希望它关闭而不是最小化)。

答案 1 :(得分:4)

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

禁用关闭按钮的代码:

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