我有一个winform,其中minimumMaximizeClose按钮被禁用,但如果有人在任务栏中按下它,它仍会最小化。我想防止这种情况发生。
我该如何做到这一点?
答案 0 :(得分:17)
覆盖表单上的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代码:
How to disable the minimize button in C#?
效果很好:没有闪烁,当用户试图最小化时没有任何内容。
答案 1 :(得分:4)
您可能会抓住他们在SizeChanged事件中更改它并检查WindowState,如果已设置为Minimized,则将其设置回Normal。不是最优雅的解决方案,但应该有效。
例如
private void myForm_SizeChanged(object sender, System.EventArgs e)
{
if (myForm.WindowState == FormWindowState.Minimized)
{
myForm.WindowState = FormWindowState.Normal;
}
}
答案 2 :(得分:1)
如果它适合您,只需将其隐藏在任务栏中:ShowInTaskbar=false
答案 3 :(得分:1)
您只需从窗口中删除最小化按钮:
将下面的代码添加到Form类的private void InitializeComponent()方法:
this.MinimizeBox = false;