我有一个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帖子中的代码:
如何在C#中禁用最小化按钮?
效果很好:当用户尝试最小化时,没有闪烁或其他问题。
例如:
private void myForm_SizeChanged(object sender, System.EventArgs e)
{
if (myForm.WindowState == FormWindowState.Minimized)
{
myForm.WindowState = FormWindowState.Normal;
}
}
你可以从窗口中简单地删除最小化按钮:
将下面的代码添加到Form类的private void InitializeComponent()方法中:
this.MinimizeBox = false;
ShowInTaskbar=false