WPF Windows で閉じるボタンを非表示にする方法: P/Invoke ソリューション
WPF では、閉じるボタンを非表示にすることが望ましい場合があります。タイトル バーを保持したまま、モーダル ダイアログで。組み込みの WPF プロパティはこの機能を提供しませんが、P/Invoke を活用すると回避策が得られます。
ステップ 1: 関連する定数と DllImport 関数を宣言する
まず始めます。次の定数と DllImport 宣言をウィンドウに追加します。 class:
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);
ステップ 2: Loaded イベントで閉じるボタンを非表示にする
次に、次のコードを Window の Loaded イベントに含めます:
var hwnd = new WindowInteropHelper(this).Handle; SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);
予想結果:
これらの手順を実行すると、タイトル バー自体は表示されたままですが、閉じるボタンがタイトル バーから消えます。
重要な注意事項:
閉じるボタンが非表示になっている間も、ユーザーはキーボード ショートカットまたはタスク バーを使用してウィンドウを閉じることができます。これを防ぐには、別の回答で提案されているように、OnClosing イベントをオーバーライドし、Cancel を true に設定することを検討してください。
以上がP/Invoke を使用して WPF ウィンドウの閉じるボタンを非表示にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。