取消WinForm最小化?

我有一个winform,其中minimumMaximizeClose按钮被禁用,但是如果有人在任务栏中按下它,它仍会最小化。 我想防止这种情况发生。

我怎么能做到这一点?

您可能会捕获它们在SizeChanged事件中更改它并检查WindowState ,如果它已设置为Minimized然后将其设置回Normal 。 不是最优雅的解决方案,但应该工作。

例如。

private void myForm_SizeChanged(object sender, System.EventArgs e) { if (myForm.WindowState == FormWindowState.Minimized) { myForm.WindowState = FormWindowState.Normal; } } 

覆盖表单上的WndProc,监听最小化消息并取消。

将此代码添加到您的表单:

 private const int WM_SYSCOMMAND = 0x0112; private const int SC_MINIMIZE = 0xf020; protected override void WndProc(ref Message m) { if (m.Msg == WM_SYSCOMMAND) { if (m.WParam.ToInt32() == SC_MINIMIZE) { m.Result = IntPtr.Zero; return; } } base.WndProc(ref m); } 

我在这个SO线程中修改了Rob的代码:
如何在C#中禁用最小化按钮?

效果很好:没有闪烁,当用户试图最小化时没有任何东西。

如果它适合您,只需将其从任务栏中隐藏: ShowInTaskbar=false

您只需从窗口中删除最小化按钮:

将下面的代码添加到Form类的private void InitializeComponent()方法:

  this.MinimizeBox = false;