WPF中如何禁用/去除窗口右上角的關閉按鈕

在WPF編程中,可能需要去除窗口的右上角的幾個按鈕:最大化按鈕、最小化按鈕和關閉按鈕,其他幾個都很好處理,就是這個關閉按鈕,WPF模型不提供刪除或隱藏功能,我們只有採用一些非正常手段,比如使用Win32函數,比如禁用,對於禁用關閉功能,可以重載OnClosing()函數來實現,——使用戶無法通過點擊右上角的關閉按鈕來關閉窗口:

 


        
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            e.Cancel 
= true
        } 
 

 

另一種方法就比較麻煩了,但是也是最徹底的方法:去除關閉按鈕

 首先,在你的Window 類中申明:

複製代碼
using System.Runtime.InteropServices;
using System.Windows.Interop;

private const int GWL_STYLE = -16;
private const int WS_SYSMENU = 0x80000;
[DllImport(
"user32.dll", SetLastError = true)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport(
"user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);

複製代碼

 然後,在裝載事件中加入:

 


var hwnd 
= new WindowInteropHelper(this).Handle;
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) 
& ~WS_SYSMENU);

 

 但是這種情況下用戶仍然可以通過Alt+F4關閉窗口,所以你可能仍然需要實現上面所說的重載OnClosing()函數,將其禁用。

 

=================================================
本文爲khler原作,轉載必須確保本文完整並完整保留原作者信息及本文原始鏈接
E-mail: [email protected]
QQ:     23381103
MSN:   [email protected]

=================================================

 

發佈了11 篇原創文章 · 獲贊 3 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章