禁用最小化按钮,但保持交叉和最大化按钮 - WPF,C#

时间:2013-05-05 06:13:47

标签: c# wpf

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

这是我想在右上角看到我的窗口按钮的图像:

enter image description here

4 个答案:

答案 0 :(得分:6)

您可能需要在此处使用PInvoke。基本上你是使用它的句柄(hwnd)导入SetWindowLong和GetWindowLong函数并将相应的标志设置到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));
} 

答案 1 :(得分:1)

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

WPF: Disabling or Hiding the Minimize, Maximize or Close Button Of a Window

希望这有帮助。

答案 2 :(得分:0)

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

答案 3 :(得分: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