private const int GWL_STYLE = -16, WS_MAXIMIZEBOX = 0x10000, WS_MINIMIZEBOX = 0x20000;
[DllImport("user32.dll")]
extern private static int GetWindowLong(IntPtr hwnd, int index);
[DllImport("user32.dll")]
extern private static int SetWindowLong(IntPtr hwnd, int index, int value);
/// <summary>
/// Hides the Minimize and Maximize buttons in a Window. Must be called in the constructor.
/// </summary>
/// <param name="window">The Window whose Minimize/Maximize buttons will be hidden.</param>
public static void HideMinimizeAndMaximizeButtons(this Window window)
{
window.SourceInitialized += (s, e) => {
IntPtr hwnd = new System.Windows.Interop.WindowInteropHelper(window).Handle;
int currentStyle = GetWindowLong(hwnd, GWL_STYLE);
SetWindowLong(hwnd, GWL_STYLE, currentStyle & ~WS_MAXIMIZEBOX & ~WS_MINIMIZEBOX);
};
}
8条答案
按热度按时间ogq8wdun1#
我偷了一些在MSDN论坛上找到的代码,并在Window类上创建了一个扩展方法,如下所示:
另外需要记住的是,由于某种原因,这在窗口的构造函数中不起作用,我将以下代码插入到构造函数中来解决这个问题:
axr492tv2#
一种方法是设置你的
ResizeMode="NoResize"
。它的行为如下。u59ebvdq3#
不知道这是否符合您的要求。视觉上..这是
insrf1ej4#
如果任何人使用Devexpress窗口(DXWindow)接受的答案不起作用。一个丑陋的方法是
q1qsirdb5#
这是我正在使用的一个解决方案。注意,最大化按钮仍然显示。
加价:
代码隐藏:
xjreopfe6#
solution proposed的@MattHamilton变体可以(也必须)在Window的构造函数中调用,技巧是在扩展方法中订阅
SourceInitialized
事件的委托。dzhpxtsq7#
如果您想删除最小化和最大化按钮,可以设置窗口的ResizeMode=“NoResize
kcrjzv8t8#
就用
它隐藏了最大化和最小化按钮,但是仍然可以通过拖动窗口边框来调整窗口大小,并使用任务栏右下角的隐藏按钮来最小化窗口。
https://learn.microsoft.com/en-us/dotnet/api/system.windows.window.windowstyle?view=windowsdesktop-6.0