使用HelpProvider类来显示帮助,UI总是在帮助窗口后面

我有一个使用HelpProvider类的C#Winforms应用程序。 每当我按F1提示帮助时,帮助窗口将始终位于我的应用程序之上,我无法将应用程序UI置于前台。 我仍然可以与我的UI进行交互,但帮助窗口仍将保持最佳状态。

这是由HelpProvider设计的吗? 或者我错过了什么?

它确实是设计的,它是我没有意识到的东西。 我刚刚重新编译了我的最后一年项目并确认了它。 我已经阅读了它,基本上每次单击表单时帮助文件都设置为TopMost = True。 这意味着即使您将表单编码为TopMost,只要单击帮助文件,它将再次返回顶部。

我确实相信如果你使用启动过程,它应该解决问题,因为帮助提供商给出了一些可定制性。

private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if(e.KeyCode ==Keys.F1) { System.Diagnostics.Process.Start(@"C:\WINDOWS\Help\mspaint.chm"); } } 

希望能帮助到你

这个问题有一个解决方案,有点脏,但它确实有效。 问题是,HelpProvider打开的帮助窗口始终位于其父窗口控件之上,该窗口控件由Help.ShowHelp第一个参数中的Control实例确定。 即使您在那里指定null ,主应用程序表单仍用作父窗口。 为避免这种情况,可以创建一个虚拟表单,该表单将用作帮助父表单。 这个表单永远不会显示,但是,帮助窗口仍然会“显示”它,实际上并不是所有其他应用程序窗口的顶部。

 public static class AppHelp { private static Form mFrmDummyHost = new Form(); public static void ShowChm() { Help.ShowHelp(mFrmDummyHost, "my_help.chm"); } } 

当然,所有其他Help.ShowHelp重载也可以这种方式调用。

希望这有助于像我这样的人,寻找永不老问题的答案;)