2010-09-07 54 views
4

我有一个简单的基于Form-Based的.NET应用程序。在此我捕获FormClosing事件以防止应用程序关闭,而不是我最小化它。应用程序应始终保持开放状态。下面是我使用的代码:最小化FormClose防止电脑关机

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

    } 

现在的问题是,这防止计算机书亭下来与非管理员权限的用户。我能做的任何事情,以便计算机能够关闭,用户不能关闭应用程序?

回答

7

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

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

+0

完蛋了。非常感谢您的帮助 – Timo 2010-09-07 09:17:09

4

我发现了另一个解决方案。您可以禁用窗体的关闭按钮,这样你的FormClosing事件可以处理的默认方式

代码禁用关闭按钮:

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