2012-03-10 53 views
7

在Windows资源管理器中搜索文件并右键单击搜索结果中的文件;有一个选项:“打开文件位置”。我想在我的C#WinForm中实现相同的功能。我这样做:打开文件位置

if (File.Exists(filePath) 
{ 
    openFileDialog1.InitialDirectory = new FileInfo(filePath).DirectoryName; 
    openFileDialog1.ShowDialog(); 
} 

有没有更好的方法来做到这一点?

+1

您的解决方案面临的问题是什么?如果'openFileDialog_View'是一个OpenFileDialog,那么你会得到一个对话框,提示用户**打开一个文件。 – gideon 2012-03-10 11:40:13

+0

我想要其他更好的方法吗? – 2012-03-10 11:42:01

+1

请参阅我的回答然后:) – gideon 2012-03-10 11:43:05

回答

28

如果openFileDialog_ViewOpenFileDialog那么你只会得到一个对话框提示用户打开一个文件。我假设你想实际上打开在资源管理器中的位置。

你可以这样做:

if (File.Exists(filePath)) 
{ 
    Process.Start("explorer.exe", filePath); 
} 

选择文件explorer.exe需要/select的说法是这样的:

explorer.exe /select, <filelist> 

我得到这个从SO后:Opening a folder in explorer and selecting a file

所以你的代码将是:

if (File.Exists(filePath)) 
{ 
    Process.Start("explorer.exe", "/select, " + filePath); 
} 
+0

这应该是“explorer.exe” – scartag 2012-03-10 11:46:04

+0

很好先生gideon。但我希望该文件被选中,如何? – 2012-03-10 12:14:36

+1

@H_wardak更新了我的答案。一个简单的[谷歌搜索](http://www.google.co.in/webhp?sourceid=chrome-instant&ix=sea&ie=UTF-8&ion=1#hl=en&output=search&sclient=psy-ab&q=open%20explorer%20and %20select%20file&OQ =&水溶液=&AQI =&AQL =&gs_sm =&gs_upl =&gs_l =&PBX = 1&FP = 237055d012d02b32&IX =海&离子= 1&BAV = on.2,or.r_gc.r_pw.r_cp.r_qf。,cf.osb&BIW = 1366&波黑= 643)把我带到那个SO帖子。 – gideon 2012-03-10 12:38:10

4

这是我如何在我的代码中做到这一点。这将在资源管理器中打开文件目录,并按照Windows资源管理器的方式选择指定的文件。

if (File.Exists(path)) 
{ 
    Process.Start(new ProcessStartInfo("explorer.exe", " /select, " + path); 
} 
+1

如果我使用“ProcessStartInfo”有什么好处?它也是没有它的工作。 – 2012-03-11 06:20:06