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");