2010-09-07 59 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; 
     } 
    }