指定相对路径

时间:2011-02-22 11:27:24

标签: c# .net winforms directory filepath

我有一个Windows窗体项目。在当前目录中,我有一个带有* .chm文件的帮助文件夹。从应用程序启动它们的最简单方法是什么?如何指定它们的相对路径?

4 个答案:

答案 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;

至于构建你的道路,其他答案确实非常清楚。