C# ShowWindow和messageloop

C# ShowWindow和messageloop,c#,winforms,multithreading,C#,Winforms,Multithreading,我使用user32.dll中的ShowWindow来显示messenger样式的弹出窗口(始终在顶部,不会窃取焦点),但我无法让它们响应。我的新表单似乎缺少messageloop,因此无法绘制控件或对输入做出反应 我曾尝试在backgroundworker中创建表单,但似乎没有帮助(表单仍然没有响应) 如果我用Application.Run(myForm)显示表单,我会得到messageloop和响应表单,但不总是在顶部+不窃取焦点功能 所以我的问题是,如何为我的表单创建messageloop?

我使用user32.dll中的ShowWindow来显示messenger样式的弹出窗口(始终在顶部,不会窃取焦点),但我无法让它们响应。我的新表单似乎缺少messageloop,因此无法绘制控件或对输入做出反应

我曾尝试在backgroundworker中创建表单,但似乎没有帮助(表单仍然没有响应)

如果我用Application.Run(myForm)显示表单,我会得到messageloop和响应表单,但不总是在顶部+不窃取焦点功能


所以我的问题是,如何为我的表单创建messageloop?

您可能想查看关于如何在不窃取焦点的情况下显示表单的帖子。这应该会有所帮助
在下面的答案中,您可以看到:

protected override bool ShowWithoutActivation
{
   get
   {
      return true;
   }
}

然后只需执行form.Show(),您就会得到一个带有非活动窗口的消息泵。

使用ShowWindow,它不会给我一个messageloop,创建的表单也不会做任何事情。我添加了部分表单答案,如果没有ShowWindow,它会给您一个消息泵,我也意识到我可以执行Application.Run()在ShowWindow之后为我的表单获取消息泵。现在,我将使用Application.DoEvents。这不是最优雅的解决方案,但atm是我唯一能想到的。