C# 如何防止c语言中的非状态形式最大化#

C# 如何防止c语言中的非状态形式最大化#,c#,winforms,maximize,maximize-window,formborderstyle,C#,Winforms,Maximize,Maximize Window,Formborderstyle,我已经创建了一个表单,并将其FormBorderStyle属性设置为none。 当我按下Windows+UP时,表单将最大化。我怎样才能防止表单最大化? 我试过了 但这不是我想要的。当我按下Windows+Up时,上面的代码将使窗体最大化,然后它将恢复到正常状态。但我想从根本上预防它 // Define the border style of the form to a dialog box. form1.FormBorderStyle = FormBorderStyle.FixedDialog

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

但这不是我想要的。当我按下
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;

归功于

将表单的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;
    }
}

有帮助吗?@ HANS,您可以考虑仔细查看它(因为bug或其他东西),因为在<代码> FrimBrdStype中没有任何东西可以阻止这种行为。代码>修复对话框将停止手动调整大小
MaximiseBox=False
阻止您最大化窗口,并且
MinimiseBox=False
也应该这样做。
protected override CreateParams CreateParams {
    get {
        const int WS_MAXIMIZEBOX = 0x00010000;
        var cp = base.CreateParams;
        cp.Style &= ~WS_MAXIMIZEBOX;
        return cp;
    }
}