【问题标题】:Maximizing a form, and disabling user to resize the form最大化表单,并禁止用户调整表单大小
【发布时间】:2019-11-22 12:57:51
【问题描述】:

我正在尝试创建一个最大化的表单,而不允许用户调整它的大小。我试图最大化FormWindowState,并删除最小化和最大化按钮。通过将this.MimimumSizethis.MaximumSize 设置为this.Size(最大化大小),这应该考虑到最大化的形式。

然而,当我运行它时,表单变成了一个非常小的正方形。关于如何解决此问题的任何想法?

public partial class Testscherm : Form
{
    public Testscherm()
    {
        this.WindowState = FormWindowState.Maximized;
        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
        this.MinimumSize = this.Size;
        this.MaximumSize = this.Size;
        this.MaximizeBox = false;
        this.MinimizeBox = false;
        InitializeComponent();
    }
}

【问题讨论】:

    标签: c# winforms minimize maximize-window


    【解决方案1】:

    尝试首先调用InitializeComponent()然后添加任何更改表单属性/属性的语句。否则,设计器生成的代码可能会撤消您之前所做的任何更改。

    其次,Form.Size 不会在最大化状态下提供表单的大小。你可以改为迭代

    System.Windows.Forms.Screen.AllScreens
    

    然后沿线得到实际的屏幕尺寸

    System.Windows.Forms.Screen.AllScreens.First().WorkingArea.Size;
    

    并将其分配给this.Size

    这里的另一个问题是,一旦你分配了这个this.MaximizeBox = false,Winforms 就禁止WindowState 成为FormWindowState.Maximized。这显然是“设计使然”。您可能想要在这里使用

     this.FormBorderStyle = FormBorderStyle.None;
    

    它不仅删除了最大和最小按钮,还删除了关闭按钮。如果您需要这样的按钮,请考虑在窗口中添加您自己的关闭按钮。

    把这一切放在一起给出了

            InitializeComponent();
            this.WindowState = FormWindowState.Maximized;
            this.FormBorderStyle = FormBorderStyle.None;
            this.Size = System.Windows.Forms.Screen.AllScreens.First().WorkingArea.Size;
            this.MinimumSize = this.Size;
            this.MaximumSize = this.Size;
    

    但是:你确定你在那里尝试的东西是个好主意吗?例如,这在具有两个不同分辨率的显示器的机器上会如何表现?对于使用特定硬件并作为专门接管机器的专用软件(类似于Kiosk mode)的程序来说可能没问题。请注意,仍然可以使用某些Win-<Key> 键盘快捷键来移动窗口。

    【讨论】:

    • 当然,这是有道理的!然而,当我在 InitializeComponent() 之后设置 MaximumSize 和 Minimumsize 时,表单不会再次最大化。有什么想法吗?
    • 感谢您让我深入了解其背后的实际逻辑,并让我思考如何正确构建它,而不是给出直接的解决方案。这将有助于我理解 C# 基础知识!
    猜你喜欢
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 2011-11-07
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多