2012-03-10 5 views
7

При поиске файла в Проводнике Windows щелкните правой кнопкой мыши файл из результатов поиска; есть опция: «Открыть расположение файла». Я хочу реализовать то же самое в своей C# WinForm. Я сделал это:Открыть файл

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

Есть ли лучший способ сделать это?

+1

В чем проблема с вашим решением? если 'openFileDialog_View' является OpenFileDialog, тогда вы просто получите диалоговое окно с предложением пользователю открыть ** файл. – gideon

+0

Я хочу любую альтернативу и лучший способ, если таковой имеется? –

+1

См. Мой ответ затем: – gideon

ответ

28

Если openFileDialog_View - это OpenFileDialog, тогда вы просто получите диалоговое окно с предложением открыть файл. Я предполагаю, что вы хотите на самом деле открыть место в проводнике.

Вы бы сделать это:

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

+0

милый гедеон. но я хочу, чтобы этот файл был выбран, How? –

+1

@H_wardak Обновлен мой ответ. Простой [поиск google] (http://www.google.co.in/webhp?sourceid=chrome-instant&ix=sea&ie=UTF-8&ion=1#hl=ru&output=search&sclient=psy-ab&q=open%20explorer%20and % 20select% 20file & OQ = & водно = & AQI = & аклы = & gs_sm = & gs_upl = & gs_l = & АТС = 1 & Fp = 237055d012d02b32 & ее = море и ион = 1 & БАВ = on.2, or.r_gc.r_pw.r_cp.r_qf., cf.osb & BIW = 1366 & БиГ = 643) приземлился на эту должность. – gideon

4

Вот как я это делаю в своем коде. Это откроет каталог файлов в проводнике и выберет указанный файл так, как это делает Windows Explorer.

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

есть ли какая-либо польза, если я использую «ProcessStartInfo»? Это тоже без работы. –

Смежные вопросы