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 に答える