禁用WinForm的最小化和最大化?

119

WinForms有那三个位于右上角的方框,分别是最小化、最大化和关闭窗体。我想要做的是移除最小化和最大化,同时保留关闭。

我还想让关闭按钮最小化窗体而不是关闭它。

这个该怎么做呢?

9个回答

186

Form 有两个属性叫做 MinimizeBoxMaximizeBox,请将它们都设置为 false

为了阻止窗体关闭,需要处理 FormClosing 事件,在事件处理程序中设置 e.Cancel = true; 然后再设置 WindowState = FormWindowState.Minimized; 来最小化窗体。


1
你能不能把控制框设置为false呢? - krystan honour
3
@krystanhonour,原帖作者想要保持亲密关系。 - Hans Olsson

20

将表单属性 MaximizeBoxMinimizeBox 设置为 False


17

将处理程序绑定到FormClosing事件,然后设置e.Cancel = true,并将表单的this.WindowState = FormWindowState.Minimized

如果您想要实际关闭窗体,请创建一个类范围布尔变量_close,并在处理程序中将e.Cancel设置为!_close,这样当用户单击窗口上的X时,它不会关闭,但是您仍然可以使用close = true; this.Close();来关闭它(而不是直接杀死它)。

(为了让我的回答完整)将表单属性MaximizeBoxMinimizeBox设置为False


12

右键单击您想要隐藏它们的表单,在菜单中选择“控件”->“属性”。

在属性中,设置

  • 控制框 -> 假
  • 最小化框 -> 假
  • 最大化框 -> 假

您可以在设计器中完成此操作。


6
如何使窗体在关闭时最小化的问题已经有答案了,但如何删除最小化和最大化按钮却没有解决。在这种情况下,你需要使用以下代码: FormBorderStyle: FixedDialog
MinimizeBox: false
MaximizeBox: false 这将在窗体上禁用最小化和最大化按钮。

3
您可以在表单构造函数中直接禁用最大化。
 public Form1(){
     InitializeComponent();
     MaximizeBox = false;
 }

在关闭时最小化窗口。
private void Form1_FormClosing(Object sender, FormClosingEventArgs e) {
    e.Cancel = true;
    WindowState = FormWindowState.Minimized;
}

2

如果你不想要边框和最大化(包括禁用双击窗体最大化)或最小化,那么这对我来说是有效的:

public Form1()
{
    InitializeComponent();
    this.MaximizeBox = false;
    this.ControlBox = false;
    this.FormBorderStyle = FormBorderStyle.FixedSingle;
    this.Text = string.Empty;
}

2
在表单编辑器中选择主表单,右键单击 -> 属性。
向下滚动到底部,找到MinimiseBox并将其设置为False,如果您不想要,则同样适用于MaximiseBox

Image

在我的情况下,我只是将MaximiseBox禁用为False

0
public Form1()
{
InitializeComponent();
//this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
}

3
请在您的答案中添加一些解释。 - mechnicov
我的朋友,这很容易,只需要阅读每一行代码即可。 - Mauricio Kenny
在SO上,这是低质量的答案。 - mechnicov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接