打开文件位置

16

在Windows资源管理器中搜索文件并从搜索结果中右键单击一个文件时,会出现一个选项:“打开文件位置”。我想在我的C# WinForm中实现相同的功能。我已经尝试了以下代码:

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

有没有更好的方法来做这件事?


1
你的解决方案面临什么问题?如果 openFileDialog_View 是一个 OpenFileDialog,那么你只会得到一个提示用户打开文件的对话框。 - gideon
如果有的话,我想要任何替代方案和更好的方法? - Haroon A.
2个回答

56
如果 openFileDialog_View 是一个 OpenFileDialog,那么你只会得到一个提示用户打开文件的对话框。我假设你实际上想要在资源管理器中打开该位置。
你可以这样做:
if (File.Exists(filePath))
{
    Process.Start("explorer.exe", filePath);
}

选择 一个文件,explorer.exe需要使用 /select 参数,如下所示:

explorer.exe /select, <filelist>
我从 Stack Overflow 上获取了以下内容:在资源管理器中打开文件夹并选择文件 所以你的代码应该是:
if (File.Exists(filePath))
{
    Process.Start("explorer.exe", "/select, " + filePath);
}

这应该是“explorer.exe”。 - scartag
很好,Gideon先生。但我想选择那个文件,怎么做? - Haroon A.
1
@H_wardak 我更新了我的答案。一个简单的谷歌搜索将我带到了那个Stack Overflow的帖子。 - gideon

7

以下是我在代码中的实现方式。这将会像Windows资源管理器一样打开文件目录,并选择指定的文件。

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

1
使用 "ProcessStartInfo" 有什么好处吗?没有使用也能工作。 - Haroon A.
是的,这会打开文件夹,但不会打开与扩展名相关联的任何应用程序。例如,如果它是一个file.kml文件,它可能会尝试打开谷歌地球,但有时您只想打开文件夹。 - dcarl661

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接