最大化表单,并禁止用户调整表单大小

Maximizing a form, and disabling user to resize the form

我正在尝试创建一个最大化的表单,不允许用户调整它的大小。我尝试最大化 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();
    }
}

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

其次,Form.Size 不提供最大化状态下的表单大小。您可以改为遍历

System.Windows.Forms.Screen.AllScreens

然后根据

的行获取实际屏幕尺寸
System.Windows.Forms.Screen.AllScreens.First().WorkingArea.Size;

并将其分配给 this.Size;

这里的另一个问题是,一旦你赋值 this.MaximizeBox = false,Winforms 就禁止 WindowStateFormWindowState.Maximized。这明显是"by design"。你可能想要的是使用

 this.FormBorderStyle = FormBorderStyle.None;

这不仅去掉了最大和最小按钮,还去掉了关闭按钮。如果您需要这样的按钮,请考虑将您自己的关闭按钮添加到 window.

把这些放在一起得到

        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)的程序来说,这可能没问题。请注意 window 仍可使用某些 Win-<Key> 键盘快捷键移动。