문제

In my C# application (using Visual Studio 2010 ultimate) the user needs to select a certain file. I've created a basic file explorer which pretty much works but doesn't look great.

I've been asked to use the standard Windows file Explorer.

I know how to open it:

Process.Start("explorer.exe");

But how can I get a file path returned from it?

도움이 되었습니까?

해결책

To select a file, the Net Framework provides the OpenFileDialog component. You can see the reference at MSDN here

But basically, all you have to do is:

Create an Instance of OpenFileDialog

using(OpenFileDialog openFileDialog1 = new OpenFileDialog())
{

Set the initial property

    openFileDialog1.InitialDirectory = "c:\\" ;
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
    openFileDialog1.FilterIndex = 2 ;
    openFileDialog1.RestoreDirectory = true ;

Open the control calling the ShowDialog, wait for the OK press from the user and grab the file selected

    if(openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        string fileSelected = openFileDialog1.FileName;
    }
}

Notice the using statement around the OpenFileDialog(), while not strictly necessary this will assure the Disposing of the dialog

다른 팁

You should use the OpenFileDialog class.

Maybe you can convince your customer to accept a standard explorer dialogue. Most likely your customer does not exaclty know what he is asking for.

in WPF you would use something accordingt to this:

OpenDialog for WPF

in Froms you would use something accordingt to this:

http://www.dotnetperls.com/openfiledialog

It's a little complicated because "explorer.exe" is in %PATH% system variable, and executable path is probably not stored anywhere in Windows (in my opinion, maybe im wrong).

"explorer.exe" in all versions of windows i know is located in directory that is defined by %WINDIR% system variable. You can get that variable by method:

Environment.GetEnvironmentVariable()

and add string "explorer.exe".

That was simple way.


More complicated method:

You can find full path of already running explorer.exe process after by using WMI - little more complicated, but its more correct method.

More information here: How to get full path of running process

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top