Specifying a relative path

前端 未结 4 799
孤城傲影
孤城傲影 2021-01-13 07:20

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 specif

相关标签:
4条回答
  • 2021-01-13 07:37

    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

    0 讨论(0)
  • 2021-01-13 07:40

    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.

    0 讨论(0)
  • 2021-01-13 07:49

    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%.

    0 讨论(0)
  • 2021-01-13 07:58

    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".

    0 讨论(0)
提交回复
热议问题