c# - 如何防止在c#中最大化无状态形式

标签 c# winforms maximize maximize-window formborderstyle

我创建了一个表单并将其 FormBorderStyle 属性设置为 none。 当我按Windows + UP时,表单将最大化。如何防止表单最大化? 我试过了

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

但这不是我想要的。使用上面的代码,当我按 Windows + Up 时,表单将最大化,然后恢复到正常状态。但我想基本上阻止它。

最佳答案

将表单的 MaximizeBox 设置为 False 应该足以停止此 Aero Snap 功能。但由于某些神秘的原因,Form.CreateParams 计算了错误的样式标志。由于 4.7.1 更新,我现在无法单步执行,并且在源代码中没有看到错误。它可能与在系统菜单中禁用它有关,但与样式标志无关,只是猜测。

总之,强行敲掉原生风格旗帜确实可以解决问题。将此代码复制粘贴到您的表单类中:

protected override CreateParams CreateParams {
    get {
        const int WS_MAXIMIZEBOX = 0x00010000;
        var cp = base.CreateParams;
        cp.Style &= ~WS_MAXIMIZEBOX;
        return cp;
    }
}

关于c# - 如何防止在c#中最大化无状态形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47992355/

相关文章:

带有进度跟踪的 C# HttpWebRequest 表单发布(用于上传可能较大的文件)

c# - 通过括号之间的逗号对字符串进行分组

c# - 如何在oracle数据库中保存XML文档

c# - 从给定的 JSON 文件中检索特定属性

java - 最大化 JFrame on action?

c# - 在 2 个监视器上最大化 WPF 窗口

wpf - 将用户控件扩展到完整的窗口大小

c# - EF 5-6.1.1 中的 NullReferenceException 具有两个相同类型的导航属性

c# - 如何将用户控件添加到面板

winforms - 如何恢复最小化形式