我有一个Windows窗体项目。在当前目录中,我有一个带有* .chm文件的帮助文件夹。从应用程序启动它们的最简单方法是什么?如何指定它们的相对路径?
答案 0 :(得分:6)
Environment.CurrentDirectory属性将设置为.exe文件的位置。因此,如果您将帮助文件夹放在那里,它将是:
// The path to the Help folder.
string directory = Path.Combine(Environment.CurrentDirectory, "Help");
// The path to the Help file.
string filePath = Path.Combine(directory , "myHelpFile.chm");
// Launch the Help file.
Process.Start(filePath);
编辑:我应该说,Environment.CurrentDirectory
指向默认情况下在Windows窗体应用程序中启动进程的文件夹,但其值可以通过某些控件更改(如OpenFileDialog
- 请参阅here for a workaround)在您申请的有效期内。在Windows服务下,Environment.CurrentDirectory
映射到%SystemDirectory%
。
答案 1 :(得分:5)
您应该使用Help.ShowHelp来执行此操作
var chmFile = "CHM/test.chm";
Help.ShowHelp(ctrl, chmFile);
默认情况下,ShowHelp将在应用程序路径中搜索文件
答案 2 :(得分:3)
最简单的是
Process.Start("myHelpFile.chm");
这将打开与该文件类型相关联的系统默认程序中的chm
文件。
只要chm文件与exe位于同一目录中,这将有效。如果您有一个名为help的子文件夹,则路径为@"Help\myHelpFile.chm"
。
答案 3 :(得分:3)
我可以考虑两个选项,具体取决于您实际想要的内容。第一个是获取驻留目录(执行文件所在的目录)的路径,第二个是当前目录(为可执行文件指定的目录) :
驻留目录:
var path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
当前目录:
var path = System.Environment.CurrentDirectory;
还有另一种选择,根据文档gets the path for the executable file that started the application, not including the executable name
:
var path = Application.StartupPath;
至于构建你的道路,其他答案确实非常清楚。