如何在 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中文网其他相关文章!