1

我想为 winforms 应用程序构建一个上下文相关的帮助,为此我使用一个引用 HelperProvider 组件的类,HelpNamespace 设置为索引 html 文件,当加载表单时,我将表单中的每个控件注册到带有我从配置文件中获得的主题的帮助程序提供者:

helpProvider.SetShowHelp(control, true);
        helpProvider.SetHelpNavigator(control, helpNavigator);
        helpProvider.SetHelpKeyword(control, helpKeyword);

调试时,我确信某些控件配置了一些与索引文件不同的主题,但是在运行并按 F1 时,它始终是打开的索引文件(HelpNamespace)。当为每个控件使用 HelperProvider 实例并且没有为所有控件使用单个实例时,效果很好!为什么我不能对所有控件使用一个 helperProvider 实例?

4

1 回答 1

1

每个控件都需要 SetHelpKeyword。HelpNavigator.TopicId 可能对内部带有主题 ID 的 CHM 有用。

我在上面的代码示例中缺少“.Topic”。尝试下面的代码或从以下位置下载一个工作示例:
http ://www.help-info.de/files_download/CSharp2008_CHM.zip

            // set F1 help topic for controls on this form
        helpProvider1.SetHelpNavigator(this.btnStart, HelpNavigator.Topic);
        helpProvider1.SetHelpKeyword(this.btnStart, @"/Garden/flowers.htm");
        helpProvider1.SetHelpNavigator(this.btnExit, HelpNavigator.Topic);
        helpProvider1.SetHelpKeyword(this.btnExit, @"/Garden/tree.htm");
        helpProvider1.SetHelpNavigator(this.chkShowHelpWithNavigationPane, HelpNavigator.Topic);
        helpProvider1.SetHelpKeyword(this.chkShowHelpWithNavigationPane, @"/HTMLHelp_Examples/jump_to_anchor.htm#AnchorSample");
于 2013-02-06T20:46:03.927 回答