C# 最大化窗体,并禁用用户调整窗体大小

C# 最大化窗体,并禁用用户调整窗体大小,c#,winforms,minimize,maximize-window,C#,Winforms,Minimize,Maximize Window,我试图创建一个最大化的表单,而不允许用户调整其大小。我试图最大化窗体窗口状态,并删除最小化和最大化按钮。通过将this.MimimumSize和this.MaximumSize设置为this.Size(最大化的大小),这应该是一个最大化的形式 然而,当我运行它时,表单变成了一个非常小的正方形。我该怎么解决这个问题呢 public partial class Testscherm : Form { public Testscherm() { this.WindowS

我试图创建一个最大化的表单,而不允许用户调整其大小。我试图最大化
窗体窗口状态
,并删除最小化和最大化按钮。通过将
this.MimimumSize
this.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()
,然后添加任何更改表单属性的语句。否则,设计器生成的代码可能会撤消您之前所做的任何更改

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

System.Windows.Forms.Screen.AllScreens
然后得到屏幕的实际尺寸

System.Windows.Forms.Screen.AllScreens.First().WorkingArea.Size;
并将其分配给
此.Size

这里的另一个问题是,一旦您分配了这个,
this.MaximizeBox=false
,Winforms就会禁止
WindowsState
成为
FormWindowsState.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;

但是:你确定你在那里尝试什么是个好主意吗?例如,在具有两个不同分辨率的监视器的机器上,这将如何表现?对于一个使用特定硬件并作为专用软件专门接管机器的程序来说,这可能是可行的(类似于一个应用程序)。注意:仍然可以使用某些
Win-
键盘快捷键来移动窗口。

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

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

System.Windows.Forms.Screen.AllScreens
然后得到屏幕的实际尺寸

System.Windows.Forms.Screen.AllScreens.First().WorkingArea.Size;
并将其分配给
此.Size

这里的另一个问题是,一旦您分配了这个,
this.MaximizeBox=false
,Winforms就会禁止
WindowsState
成为
FormWindowsState.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;

但是:你确定你在那里尝试什么是个好主意吗?例如,在具有两个不同分辨率的监视器的机器上,这将如何表现?对于一个使用特定硬件并作为专用软件专门接管机器的程序来说,这可能是可行的(类似于一个应用程序)。注意:仍然可以使用某些
Win-
键盘快捷键移动窗口。

当然,这是有道理的!但是,当我在InitializeComponent()之后设置MaximumSize和Minimumsize时,表单不会再次最大化。有什么想法吗?谢谢你让我深入了解它背后的实际逻辑,让我思考如何正确地构建它,而不是给出简单的解决方案。这将有助于我理解C#基本原理!当然,这是有道理的!但是,当我在InitializeComponent()之后设置MaximumSize和Minimumsize时,表单不会再次最大化。有什么想法吗?谢谢你让我深入了解它背后的实际逻辑,让我思考如何正确地构建它,而不是给出简单的解决方案。这将有助于我理解C#基本原理!