C# 重写的CreateParams不';不生效
我重写了表单(System.Windows.Forms.form)的CreateParams属性,如下所示C# 重写的CreateParams不';不生效,c#,.net,winapi,C#,.net,Winapi,我重写了表单(System.Windows.Forms.form)的CreateParams属性,如下所示 protected override CreateParams CreateParams { get { CreateParams _CreateParams = base.CreateParams; _CreateParams.ExStyle |= (WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW);
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()
但当我使用时,它并没有像我预期的那样工作
Application.Run(new Form0());
Form0.Show()
我想知道为什么以及如何在使用
Show()
时使其生效。您应该禁用窗口的WS\u EX\u APPWINDOW
样式。您不需要添加WS\u EX\u工具窗口
<代码>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;
}
}
受保护的覆盖CreateParams CreateParams
{
得到
{
CreateParams _CreateParams=base.CreateParams;
_CreateParams.ExStyle |=WS_EX_NOACTIVATE;
_CreateParams.ExStyle&=(~WS_-EX_-APPWINDOW);//请参阅。这些问题的答案可能重复。问题是,您在哪里调用Form0.Show()
?您是否试图在main
方法中执行此操作?如果是,则不会执行。@CodyGray我有另一个表单(我将其称为Form1)为了放在前台,Form1中有一个文本框,当文本框获得焦点时,我调用Form0.Show()。在调用OnFocus()中的Form0.Show()
之后会发生什么?