我覆盖了一个表单(System.Windows.Forms.Form,我将其称之为Form0)的 CreateParams 属性,如下所述
protected override CreateParams CreateParams
{
get
{
CreateParams _CreateParams = base.CreateParams;
_CreateParams.ExStyle |= (WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW);
_CreateParams.Parent = IntPtr.Zero;
return _CreateParams;
}
}
此窗口不应该被激活(WS_EX_NOACTIVATE)并且任务栏中没有显示图标(WS_EX_TOOLWINDOW)。
使用
时效果很好Application.Run(new Form0());
但是当我使用
时,它不能像我预期的那样工作Form0.Show()
我想知道为什么以及如何在使用Show()
时使其生效。
答案 0 :(得分:1)
您应该禁用窗口的WS_EX_APPWINDOW
样式。您不需要添加WS_EX_TOOLWINDOW
。 WS_EX_NOACTIVATE
默认处理它:
protected override CreateParams CreateParams
{
get
{
CreateParams _CreateParams = base.CreateParams;
_CreateParams.ExStyle |= WS_EX_NOACTIVATE;
_CreateParams.ExStyle &= (~WS_EX_APPWINDOW); //<----
_CreateParams.Parent = IntPtr.Zero;
return _CreateParams;
}
}