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