HelperProvider всегда открывает индексный файл

Я хочу создать контекстно-зависимую справку для приложения winforms, для этого я использую класс со ссылкой на компонент HelperProvider, HelpNamespace устанавливается на индексный HTML-файл, и когда форма загружается, я регистрирую каждый элемент управления в форме для помощник с темой, которую я получаю из файла конфигурации:

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

при отладке я уверен, что некоторые элементы управления настроены с некоторыми темами, отличными от файла индекса, но при запуске и нажатии клавиши F1 всегда открывается файл индекса (HelpNamespace). При использовании экземпляра HelperProvider для каждого элемента управления и без одного экземпляра для всех элементов управления это работает отлично! Почему я не могу использовать один экземпляр helperProvider для всех элементов управления?

1 ответ

Вам нужно SetHelpKeyword для каждого элемента управления. HelpNavigator.TopicId может быть полезен для 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");
Другие вопросы по тегам