2016-04-15 9 views
-1

Я добавил файл .chm в свой корень приложения. когда я извлечь файл, используя приведенную ниже кода он ссылается на пути к бен/выпуску/somehting.chmКак показать chm-файл в приложении C# winforms

System.Windows.Forms.Help.ShowHelp(this, Application.StartupPath+"\\"+"somehting.chm"); 

я хочу, чтобы получить путь относительно места установки приложения. пожалуйста помоги.

Файл chm, добавленный в корневой каталог, не загружается после развертывания приложения. его даже не загружать при отладке в визуальной студии и не давать никаких ошибок.

enter image description here

+0

Это путь он использует, в то время как вы отладки в Visual Studio или во время установки приложения/развертывания? – Marco

+0

Возможный дубликат [Как я могу получить путь приложения в консольном приложении .NET?] (Http://stackoverflow.com/questions/837488/how-can-i-get-the-applications-path-in-a -net-console-application) –

+0

Возможная дубликация Относительная [Пути в Winforms] (http://stackoverflow.com/questions/1019641/relative-paths-in-winforms) –

ответ

1

Как я могу видеть первый фрагмент кода из вашего вопроса, вызывающий 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 будет работать.

enter image description here

+0

работает с режимами отладки и выпуска, после выполнения ваших инструкций. но когда я добавляю проект установки и развертываю приложение. и запустить приложение из установочного файла, его не работает. не могли бы вы помочь – Tan

+0

мне нужно добавить файлы chm в папку приложения проекта настройки – Tan

+0

спасибо mate, это было очень полезно и решило мою проблему – Tan

1

Понадобится:

String exeDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location); 

Итак:

String HelpFilepath = "file://" + Path.Combine(exeDirectory , "somehting.chm"); 
Help.ShowHelp(this, path); 
+0

все еще собирается папка bin/release – Tan

+0

При развертывании приложения результаты будут разными. Это возвращает фактический каталог EXE, в котором вы работаете. – user3185569

+0

ой, тогда все будет хорошо. плохое развертывание и тестирование. спасибо, почему разработка окон похожа на ад по сравнению с веб-сайтом. – Tan

0

Ответ от подобного topic является:

// 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"); 
Смежные вопросы