Cod*_*ray 13
实际上,这里有两个完全不同的问题.当然,从功能的角度来看,它们看起来基本相同,但从实现模型的角度来看(就像Windows本身自然会使用的那样)它们是无关的.
正如其他人已经回答的那样,您可以通过将其MaximizeBox属性设置为来防止您的表单最大化false.这将删除窗体底层窗口上的WS_MAXIMIZEBOX样式,这会阻止窗口管理器允许窗口最大化.它禁用窗口标题栏上的最大化框(最小化框和关闭框之间的最大框),禁用窗口/系统菜单上的"最大化"选项,以及最大化我可能忘记的窗口的任何其他方法.
但是,这与Win+ ↑键盘快捷键无关,它可以调用Aero Snap,就像将窗口拖动到屏幕边缘的魔术位置一样.窗口管理器,无论是由于错误还是Aero Snap的功能,仍然允许您有效地"最大化"不应该最大化的窗口.设置MaximizeBox属性不会影响此属性,因此如果您确实希望阻止用户以这种方式更改窗口大小,则需要在窗口上禁用Aero Snap的效果.
不幸的是,没有方法(至少,据我所知)在每个窗口或每个进程的基础上以编程方式禁用Aero Snap(也参见此相关问题).如果用户启用了Aero Snap,您可以假设他们希望该行为和应用程序不应该篡改它.您唯一能做的就是完全禁用调整窗口大小.在的WinForms,你这样做,通过设置FormBorderStyle属性设置为下列之一:FormBorderStyle.FixedSingle,FormBorderStyle.Fixed3D或FormBorderStyle.FixedDialog.如果您仍希望以其他方式调整窗口大小,则需要编写代码以手动处理,这不是一项特别容易的任务.
因此,我鼓励您仔细考虑这是否真的有必要.所有其他不可最大化的窗口只需通过设置MaximizeBox属性(或在UI框架中执行等效操作)即可实现此目的,这意味着它们仍然可以通过Aero Snap有效地最大化.如果这适用于其他所有人的窗口,包括那些属于Windows本身的窗口,它可能适合您.
小智 6
this.FormBorderStyle = FormBorderStyle.FixedSingle;
Run Code Online (Sandbox Code Playgroud)
该行代码将阻止用户重新调整Window的大小.
除此之外,你隐藏/禁用最大化框,这应该做你所要求的.
要禁用最大化框,请使用此选项
this.MaximizeBox = false;
Run Code Online (Sandbox Code Playgroud)
要隐藏最大化框,也可以使用它
this.MinimizeBox = false;
Run Code Online (Sandbox Code Playgroud)
如果将"最大化"和"最小化"设置为false,则按钮将消失.