2

我想知道如何禁用最小化按钮,但保留最大化/恢复按钮和关闭按钮(红色“X”)。

这是我希望右上角的窗口按钮看起来像的图像:

在此处输入图像描述

4

4 回答 4

6

您可能需要在此处使用 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));
} 
于 2013-05-05T06:51:11.590 回答
1

Blabblablaster 基本上是正确的——您需要 P/Invoke 几个 Windows API 调用——但以下 TechNet 文章还描述了您应该在何时/何地调用 Windows API:

WPF:禁用或隐藏窗口的最小化、最大化或关闭按钮

希望这可以帮助。

于 2015-02-18T11:57:07.350 回答
0

我不认为 WPF 提供了一种仅禁用最小化按钮的方法。您可以做的是禁用完整的标题栏并为自己创建一个自定义标题栏。看看这个

于 2013-05-05T06:21:41.993 回答
0

这是我的做法

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
于 2019-01-22T03:17:21.380 回答