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

如何在c#winforms应用程序中显示chm文件,c#,winforms,chm,C#,Winforms,Chm,我已将.chm文件添加到我的应用程序根目录中。当我使用下面的代码获取文件时,它引用了bin/release/somehting.chm的路径 System.Windows.Forms.Help.ShowHelp(this, Application.StartupPath+"\\"+"somehting.chm"); 我想获取相对于应用程序安装位置的路径。请帮忙 部署应用程序后,未加载添加到根目录的chm文件。在VisualStudio中调试时甚至没有加载,也没有给出任何错误 您需要: Stri

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

System.Windows.Forms.Help.ShowHelp(this, Application.StartupPath+"\\"+"somehting.chm");
我想获取相对于应用程序安装位置的路径。请帮忙

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

您需要:

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

类似的答复是:


正如我从您的问题中看到的第一个代码片段所示,调用
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-解决方案资源管理器并检查CHM文件的属性。转到下面快照中显示的下拉框,并设置“始终复制”(此处仅限德语)。在
Debug
模式下启动项目,并检查bin/Debug输出文件夹。对
Release
模式和输出文件夹执行相同的操作。CHM应该驻留在那里,我希望您的CHM呼叫能够正常工作


这是在Visual Studio内部调试或安装/部署应用程序时使用的路径吗?当我从Visual Studio运行时,它的getting applicationfolder/bin/release/something.chm my something.chm文件位于applicationfolder/something.chm下,可能与可能的Dublate Relative重复。即使在基于安装位置进行部署时,我也希望获取something.chm文件路径Common mate,如果它是重复的,我为什么要发帖。我将检查前面类似问题的答案,并检查它是否是可行的解决方案,如果不是,那么我将只发布。仍将转到bin/release folder部署应用程序时,结果将不同。这将返回您正在运行的EXE的实际目录。哦,那就好了。我将部署和测试。感谢为什么windows开发与Web相比简直是地狱你也可以查看编辑过的答案,它更能保证得到正确的结果。它不起作用我已经部署了我的应用程序,安装并检查了它没有显示。请按照您的说明帮助其使用调试和发布模式。但是当我添加安装项目并部署应用程序时。并从安装文件运行应用程序,但它不工作。我需要将chm文件添加到setup ProjectMate的应用程序文件夹中吗谢谢mate,它非常有用,解决了我的问题
// 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");
private const string sHTMLHelpFileName = "CHM-example.chm";
...

private void button1_Click(object sender, EventArgs e) {
  System.Windows.Forms.Help.ShowHelp(this, Application.StartupPath + @"\" + sHTMLHelpFileName);
  }