微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

防止Winform被最大化?

我想阻止我的桌面应用程序被最大化。 它不应该通过任何方式达到最大化 – 通过双击标题栏,或单击键盘上的Windows +向上箭头等。

– >我禁用MaximizeBoxMinimizeBox

– >我也为我的WinForm设置MaximumSizeMinimumSize

仍然当我按Windows +向上箭头,我的胜利forms转移到屏幕的左上angular,我的意思是它得到最大化。 所以请告诉我,以防止这种事情发生…

Windows从多图标文件中select错误的图标,并自我渲染以更正大小

如何以编程方式停止Windows服务

创build互斥锁时,“找不到path的一部分”错误

Windows批处理脚本中的文件/文件夹select器对话框

如何保护一个窗口.net应用程序中的静态string?

以编程方式将规则添加到AVG防火墙

在C#中将USB设备名称映射到COM端口?

.net类在Linux上通过SSH远程执行?

检索有关非exe文件的数字签名的信息?

C#从registry中获取SystemRestore的状态

实际上这里有两个完全分开的问题。 当然,从功能的角度来看,它们基本上是一样的,但是从实现模型的角度来看(就像Windows自然使用的),它们是不相关的。

正如其他人所回答的,您可以通过将其MaximizeBox属性设置为false来防止您的表单被最大化。 这将删除窗体的底层窗口上的WS_MAXIMIZEBox样式 ,从而防止窗口管理器允许窗口最大化。 它禁用窗口标题栏(最小化框和关闭框之间的最大化框),禁用窗口/系统菜单上的“最大化”选项,以及任何其他最大化我可能已经忘记的窗口的方法

但是,这与Win + ↑键盘快捷键没有任何关系,它会调用Aero Snap ,就像将窗口拖动到坐在屏幕边缘的魔术位置一样。 窗口管理器,无论是作为Aero Snap的bug还是功能的结果,仍然允许您有效地“最大化”不应该被最大化的窗口。 设置MaximizeBox属性不会影响到这一点,所以如果你真的想阻止用户通过这种方式改变窗口大小,你需要在你的窗口中禁用Aero Snap的效果

不幸的是,没有方法(至少,不是我所知)在每个窗口或每个进程的基础上以编程方式禁用Aero Snap(也请参阅此相关问题 )。 如果用户启用了Aero Snap,则可以假定他们希望这种行为和应用程序不应该被篡改。 你唯一能做的就是彻底禁用调整窗口的大小。 在WinForms中,通过将FormBorderStyle属性设置为下列之一: FormBorderStyle.FixedSingle , FormBorderStyle.Fixed3D或FormBorderStyle.FixedDialog 。 如果您仍希望以其他方式调整窗口大小,则需要编写代码来手动处理,这不是一件特别容易的事情。

因此,我鼓励你们非常仔细地考虑这是否真的有必要。 所有其他不可最大化的窗口通过设置MaximizeBox属性(或在UI框架中执行相同操作)来完成此操作,这意味着它们仍然可以通过Aero Snap实现最大化。 如果这适用于其他人的窗口,包括Windows本身的一部分,那么它应该可能适合你。

该表单有一个名为MaximizeBox属性 – 将其设置为false。

至于你的第二个问题,看看这个问题,这是在WinForms中实现键盘快捷方式的最佳方法的答案 。

this.FormBorderStyle = FormBorderStyle.FixedSingle;

该行代码将阻止用户重新调整窗口的大小。

除此之外,你隐藏/禁用最大化框,应该做你所问。

要禁用最大化框使用这个

this.MaximizeBox = false;

要隐藏最大化的盒子,也要使用这个

this.MinimizeBox = false;

如果最大化和最小化设置为false,按钮消失。

您可以通过设置来防止窗口贴紧到左上角

private void toolBox_Move(object sender,EventArgs e) { this.WindowState = FormWindowState.normal; }

在表单的移动事件中。

一个名为“MaximumBox”的Form类的属性,你必须在你的表单的属性窗口中设置False …这实际上将禁止以任何方式最大化表单…此外,如果你想控制你的表单您可以使用“MinimumSize,MaximumSize”等属性自行设置其值,或为MaximumSizeChanged和MinimumSizeChanged事件创建事件处理程序。

设置最大尺寸等于大小(或某种大小)至少停止窗口全屏。 它仍然捕捉到左上角,但它仍然是一个窗口,至少看起来是正确的 – 就像Windows是愚蠢的,而不是你的程序。

如果您的窗口或应用程序已激活,您可以尝试RegisterHotKey Win + Up,如果取消激活,取消注册此热键。 你必须赶上热键,并返回适当的价值,以防止进一步处理。

看看WM_ACTIVATEAPP , WM_ACTIVATE和WM_NCACTIVATE 。 如果您想禁用所有窗口的Win + UP,则可以使用第一个

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐