Specifying a relative path

我怕爱的太早我们不能终老 提交于 2019-12-19 07:59:08

问题


I have a windows forms project. In the current directory I have a Help folder with *.chm files. What is the easiest way to launch them from the application? How can I specify the relative path to them?


回答1:


You should use Help.ShowHelp to do this

var chmFile = "CHM/test.chm";
Help.ShowHelp(ctrl, chmFile);

by default ShowHelp will search file in the application path




回答2:


The Environment.CurrentDirectory property will be set to the location of your .exe file. So if you place your help folder in there, it will be:

// 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); 

EDIT: I should say, that Environment.CurrentDirectory points to the folder where the process started by default in a Windows Forms application, but its value can be changed by some controls (like the OpenFileDialog - see here for a workaround) during the lifetime of your application. Under a Windows Service, Environment.CurrentDirectory maps to the %SystemDirectory%.




回答3:


The easiest is

Process.Start("myHelpFile.chm");

This will open the chm file in the systems default program associated with that file type.

This will work as long as the chm file is located in the same directory as your exe. If you have a sub folder called help, the path will be @"Help\myHelpFile.chm".




回答4:


I can think of two options, depending on what you actually want. The first is to get the path to the resident directory (where the executing files live) and the second concerns the current directory (the directory specified for the executable to work from):

Resident directory:

var path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

Current directory:

var path = System.Environment.CurrentDirectory;

There is also another option, which, according to documentation gets the path for the executable file that started the application, not including the executable name:

var path = Application.StartupPath;

As for constructing your path, other answers cover that very well indeed.



来源:https://stackoverflow.com/questions/5077475/specifying-a-relative-path

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!