【发布时间】:2010-09-17 16:13:31
【问题描述】:
我有一个禁用了 minimizeMaximizeClose 按钮的 winform,但如果有人在任务栏中按下它,它仍然会最小化。我想防止这种情况发生。
我怎样才能做到这一点?
【问题讨论】:
我有一个禁用了 minimizeMaximizeClose 按钮的 winform,但如果有人在任务栏中按下它,它仍然会最小化。我想防止这种情况发生。
我怎样才能做到这一点?
【问题讨论】:
覆盖表单上的 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);
}
我修改了Rob在这个SO线程中找到的代码:
How to disable the minimize button in C#?
效果很好:没有闪烁,当用户尝试最小化时什么也没有。
【讨论】:
您可能会发现他们在 SizeChanged 事件中更改它并检查 WindowState,如果它已设置为 Minimized,则将其设置回 Normal。不是最优雅的解决方案,但应该可以。
例如。
private void myForm_SizeChanged(object sender, System.EventArgs e)
{
if (myForm.WindowState == FormWindowState.Minimized)
{
myForm.WindowState = FormWindowState.Normal;
}
}
【讨论】:
如果它适合您,只需将其从任务栏中隐藏:ShowInTaskbar=false
【讨论】:
您可以简单地从窗口中移除最小化按钮:
将以下代码添加到 Form 类的私有 void InitializeComponent() 方法中:
this.MinimizeBox = false;
【讨论】: