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

标签 c# .net winforms

我有一个使用 HelpProvider 类的 C# Winforms 应用程序。 每当我按 F1 调出帮助时,帮助窗口将始终位于我的应用程序之上,我无法将我的应用程序 UI 置于前台。我仍然可以与我的 UI 交互,但帮助窗口将保留在顶部。

这是 HelpProvider 设计的吗?还是我遗漏了什么?

最佳答案

这个问题有一个解决方案,有点脏,但它有效。 问题是,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 重载也可以这样调用。

希望这可以帮助像我这样的人寻找永不过时的问题的答案;)

关于c# - 使用 HelpProvider 类显示帮助,UI 总是在帮助窗口后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3569793/

相关文章:

.net - 有没有办法在不命名目标控件的情况下使用 Wpf 标签的目标?

c# - 干净的 linq 实现以按孙子过滤列表

.net - ADO.NET Entity Framework 和 Linq to Entities

c# - csom 上下文凭据安全

javascript - 代码可以在 CSHTML 中运行,但不能在外部 Javascript 文件中运行

C#填充多边形(三角形)

c# - 如何在 PropertyGrid 中显示静态(共享)对象的属性?

vb.net - 如何在 VB.Net 中自动对 Azure 信息保护的 Outlook 电子邮件敏感度进行分类?

c# - 基于供应商 .NET 4.X 的应用程序无法生成 WSDL 客户端,因为 SSLv3 已禁用

c# - 应用程序不加载azure应用程序配置功能标志值,但加载配置值