我希望防止我的桌面应用程序被最大化。它不应该通过任何手段变得最大化 - 通过双击标题栏,或通过在键盘上单击Windows + Up箭头等。
-> 我禁用了 MaximizeBox 和 MinimizeBox。
-> 我还为我的WinForm设置了 MaximumSize 和 MinimumSize。
但是当我按Windows + Up箭头时,我的窗体会移动到屏幕左上角,也就是说它被最大化了。所以请告诉我如何防止这种情况发生...
我希望防止我的桌面应用程序被最大化。它不应该通过任何手段变得最大化 - 通过双击标题栏,或通过在键盘上单击Windows + Up箭头等。
-> 我禁用了 MaximizeBox 和 MinimizeBox。
-> 我还为我的WinForm设置了 MaximumSize 和 MinimumSize。
但是当我按Windows + Up箭头时,我的窗体会移动到屏幕左上角,也就是说它被最大化了。所以请告诉我如何防止这种情况发生...
MaximizeBox
属性设置为false
来防止窗体最大化。这会删除窗体底层窗口上的WS_MAXIMIZEBOX
样式,从而防止窗口管理器允许窗口被最大化。 它会禁用窗口标题栏上的最大化框(在最小化框和关闭框之间的那个),禁用窗口/系统菜单上的“最大化”选项以及任何我可能忘记的最大化窗口的其他方法。MaximizeBox
属性对此没有影响,因此,如果您真正想防止用户以这种方式更改窗口大小,则需要禁用Aero Snap对您的窗口的影响。很遗憾,至少目前我所知道的方法中没有可编程地按窗口或进程禁用Aero Snap的方式(也请参见此相关问题)。如果用户启用了Aero Snap,则可以认为他们想要这种行为,并且应用程序不应该干扰它。你唯一能做的就是完全禁用调整窗口大小。在WinForms中,你可以通过设置FormBorderStyle
属性为以下之一来实现: FormBorderStyle.FixedSingle
, FormBorderStyle.Fixed3D
, 或 FormBorderStyle.FixedDialog
。如果你仍然希望以其他方式调整你的窗口大小,你需要编写代码来手动处理,这不是一个特别容易的任务。
因此,我鼓励你非常谨慎地考虑是否真的有必要这样做。所有其他不可最大化的窗口都可以通过设置 MaximizeBox
属性(或在其UI框架中执行相当操作)来实现,这意味着它们仍然可以通过Aero Snap有效地最大化。如果这对所有其他窗口都起作用,包括Windows自身的窗口,那么它可能也适用于你。
this.FormBorderStyle = FormBorderStyle.FixedSingle;
这行代码将防止用户调整窗口大小。
除此之外,您还需要隐藏/禁用最大化框,并且这样做应该可以满足您的要求。
使用以下代码来禁用最大化框
this.MaximizeBox = false;
如果要隐藏最大化按钮,也可以使用以下代码
this.MinimizeBox = false;
您可以通过设置以下内容来防止窗口捕捉到左上角:
private void toolbox_Move(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Normal;
}
将MaximumSize设置为至少与Size(或某个尺寸)相等可以防止窗口全屏。它仍然会捕捉到左上角,但至少它是一个窗口,并且看起来正确 - 就像是Windows变傻了而不是你的程序。
Form类有一个名为“MaximumBox”的属性,您必须在窗体的属性窗口中将其设置为False...这实际上会禁用窗体通过任何方式进行最大化...此外,如果您想控制窗体大小,可以使用诸如“MinimumSize,MaximumSize”之类的属性,根据您的意愿设置它们的值或为MaximumSizeChanged和MinimumSizeChanged事件创建事件处理程序...
Maximizebox=false
将maximumsize设置为winform默认大小
例如,如果大小为(646,385),则设置maximumsize为(646,385)
很简单!应用以下代码以在触发调整大小事件时将窗口状态保持为正常。
protected override void OnResize(EventArgs e) {
base.OnResize(e);
WindowState = FormWindowState.Normal;
}
你可以做的一件事是将MaximumSize和MinimumSize设置为相同的值,但不是0,0。