最大化表单,并禁止用户调整表单大小
Maximizing a form, and disabling user to resize the form
我正在尝试创建一个最大化的表单,不允许用户调整它的大小。我尝试最大化 FormWindowState
,并删除最小化和最大化按钮。通过将 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()
,然后 添加任何更改表单 attributes/properties 的语句。否则,设计器生成的代码可能会撤消您之前所做的任何更改。
其次,Form.Size
不提供最大化状态下的表单大小。您可以改为遍历
System.Windows.Forms.Screen.AllScreens
然后根据
的行获取实际屏幕尺寸
System.Windows.Forms.Screen.AllScreens.First().WorkingArea.Size;
并将其分配给 this.Size
;
这里的另一个问题是,一旦你赋值 this.MaximizeBox = false
,Winforms 就禁止 WindowState
为 FormWindowState.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>
键盘快捷键移动。
我正在尝试创建一个最大化的表单,不允许用户调整它的大小。我尝试最大化 FormWindowState
,并删除最小化和最大化按钮。通过将 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()
,然后 添加任何更改表单 attributes/properties 的语句。否则,设计器生成的代码可能会撤消您之前所做的任何更改。
其次,Form.Size
不提供最大化状态下的表单大小。您可以改为遍历
System.Windows.Forms.Screen.AllScreens
然后根据
的行获取实际屏幕尺寸System.Windows.Forms.Screen.AllScreens.First().WorkingArea.Size;
并将其分配给 this.Size
;
这里的另一个问题是,一旦你赋值 this.MaximizeBox = false
,Winforms 就禁止 WindowState
为 FormWindowState.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>
键盘快捷键移动。