Как отобразить файл chm в приложении C# winforms
Я добавил.chm файл в корень моего приложения. когда я получаю файл, используя приведенный ниже код, он ссылается на путь к bin/release/somehting.chm
System.Windows.Forms.Help.ShowHelp(this, Application.StartupPath+"\\"+"somehting.chm");
Я хочу получить путь относительно места установки приложения. пожалуйста помоги.
добавленный в корневой каталог файл chm не загружается после развертывания приложения. его даже не загружается при отладке в visual studio и не выдает никаких ошибок.
3 ответа
Как я вижу первый фрагмент кода из вашего вопроса Help.ShowHelp
не так уж и плохо Иногда я использую соответствующий код ниже. Возможны многие решения... Пожалуйста, обратите внимание, что опечатки, например, somehting.chm, вызывают помехи в фрагментах кода
private const string sHTMLHelpFileName = "CHM-example.chm";
...
private void button1_Click(object sender, EventArgs e) {
System.Windows.Forms.Help.ShowHelp(this, Application.StartupPath + @"\" + sHTMLHelpFileName);
}
Поэтому, пожалуйста, откройте Visual Studio - Solution Explorer и проверьте свойства вашего файла CHM. Перейдите в раскрывающийся список, показанный на снимке ниже, и установите "Всегда копировать" (здесь только немецкий). Начните свой проект в Debug
режим и проверьте папку вывода bin/debug. Сделать то же самое для Release
режим и выходная папка. CHM должен находиться там, и я надеюсь, что ваш звонок в CHM работает.
Тебе нужно:
String exeDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
Так:
String HelpFilepath = "file://" + Path.Combine(exeDirectory , "somehting.chm");
Help.ShowHelp(this, path);
Ответ из аналогичной темы:
// get full path to your startup EXE
string exeFile = (new System.Uri(Assembly.GetEntryAssembly().CodeBase)).AbsolutePath;
// get directory of your EXE file
string exeDir = Path.GetDirectoryName(exeFile);
// and open Help
System.Windows.Forms.Help.ShowHelp(this, exeDir+"\\"+"somehting.chm");