如何在c#winforms应用程序中显示chm文件

时间:2016-04-15 06:03:31

标签: c# winforms chm

我已将.chm文件添加到我的应用程序根目录。当我使用下面的代码获取文件时,它引用了bin / release / somehting.chm的路径

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

我想获得相对于应用程序安装位置的路径。请帮忙。

部署应用程序后,未加载添加到根目录的chm文件。它在Visual Studio中进行调试时甚至没有加载,也没有出现任何错误。

enter image description here

3 个答案:

答案 0 :(得分:1)

你需要:

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

所以:

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

答案 1 :(得分: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

答案 2 :(得分: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");