我想知道如何禁用最小化按钮,但保留最大化/恢复按钮和关闭按钮(红色“X”)。
这是我希望右上角的窗口按钮看起来像的图像:
您可能需要在此处使用 PInvoke。基本上,您正在导入 SetWindowLong 和 GetWindowLong 函数并使用它的句柄(hwnd)将相应的标志设置为 Win API 窗口
private const int GWL_STYLE = -16;
private const int WS_MINIMIZE = -131073;
[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);
private static void CanMinimize(Window w)
{
var hwnd = new WindowInteropHelper(w).Handle;
long value = GetWindowLong(hwnd, GWL_STYLE);
SetWindowLong(hwnd, GWL_STYLE, (int)(value & ~WS_MINIMIZE));
}
Blabblablaster 基本上是正确的——您需要 P/Invoke 几个 Windows API 调用——但以下 TechNet 文章还描述了您应该在何时/何地调用 Windows API:
希望这可以帮助。
我不认为 WPF 提供了一种仅禁用最小化按钮的方法。您可以做的是禁用完整的标题栏并为自己创建一个自定义标题栏。看看这个。
这是我的做法
Private Sub WindowAddChange_StateChanged(sender As Object, e As EventArgs) Handles Me.StateChanged
If sender.windowstate = WindowState.Minimized Then
Me.WindowState = WindowState.Normal
End If
End Sub