C# 重写的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);

我重写了表单(System.Windows.Forms.form)的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()
但当我使用时,它并没有像我预期的那样工作

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()
之后会发生什么?