Wpf 視窗中隱藏關閉按鈕
在WPF 模態對話框中,我們有時希望隱藏視窗頂部的關閉按鈕,但仍然保留標題列。但是,現有的 ResizeMode、WindowState 和 WindowStyle 屬性都不能同時滿足這兩個要求。以下介紹一種使用 P/Invoke 解決此問題的方案。
首先,在視窗類別中加入以下聲明:
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);
然後,在視窗的Loaded 事件中放入以下程式碼:
var hwnd = new WindowInteropHelper(this).Handle; SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);
執行上述程式碼後,關閉按鈕將被隱藏。需要注意的是,這只是隱藏了按鈕,關閉視窗的快速鍵 (Alt F4) 仍然有效。如果需要禁止使用者關閉窗口,可以使用 Gabe 提出的方法,重寫 OnClosing 事件並設定 Cancel 為 true。
以上是如何在 WPF 模式對話方塊中隱藏關閉按鈕,同時保留的詳細內容。更多資訊請關注PHP中文網其他相關文章!