Используйте Id вместо контекста
Я использую HelpNDoc для предоставления chm-файла для контекстной справки в моем приложении.
В этой программе вы определяете идентификатор справки и соответствующий контекст справки.
Например, идентификатор справки может быть "SystemSetup"
, а контекст справки - 57
.
Теперь мой вопрос:
Я могу вызвать помощь следующим образом:
System.Windows.Forms.Help.ShowHelp(null, @"myhelp.chm", HelpNavigator.TopicId, "57");
И все работает хорошо, но могу ли я как-то вызвать ShowHelp
с помощью help-ID ("SystemSetup"
) вместо этого?
Я задаю этот вопрос, потому что контекст справки может измениться, но идентификатор справки остается всегда одно и то же.
2 ответа:
Нет простого способа сделать это. Идентификатор темы-это лучшая вещь, которую вы должны непосредственно указать на тему. Программное обеспечение, которое мы используем для создания файлов CHM, позволяет давать имена темам, которые могут быть получены с помощью вашего кода.
Если это не работает для вас, и единственное, что у вас есть, это имя, вы можете сделать это с помощью значения
Topic
enum и имени HTML-файла (если он достаточно различен).Что-то вроде этого может быть тем, что вам нужно (вы можете получить имя html-файла через CHM viewer):
System.Windows.Forms.Help.ShowHelp(null, @"myhelp.chm", HelpNavigator.Topic, "SystemSetup.html");
Я не знаю, какой вариант лучше. Это зависит от вас и вашего конкретного сценария.
HelpNDoc использует следующий шаблон для именования файлов раздела:
"HELP_ID.htm"
, гдеHELP_ID
- выбранный уникальный идентификатор справки для этого раздела. Таким образом, вы можете надежно открыть определенную тему, используя следующую команду:System.Windows.Forms.Help.ShowHelp(null, @"help.chm", HelpNavigator.Topic, "HELP_ID.htm");
Кроме того, как вы узнали, HelpNDoc может генерировать исходный файл с константами. И вы можете автоматизировать его генерацию и включить его в свой процесс сборки, создав новую сборку "кода". Смотрите пошаговое руководство: Как создать новый вывод документации, который будет опубликовано