如何防止 none state form 在 c# 中被最大化

how to prevent none state form from being maximized in c#

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

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

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

// Define the border style of the form to a dialog box.
form1.FormBorderStyle = FormBorderStyle.FixedDialog;

// Set the MaximizeBox to false to remove the maximize box.
form1.MaximizeBox = false;

// Set the MinimizeBox to false to remove the minimize box.
form1.MinimizeBox = false;

归功于 How do I disable form resizing for users?

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

Anyhoo,强行关闭原生风格标志确实解决了问题。将此代码复制并粘贴到您的表单中 class:

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