2012-03-10 18 views
7

Podczas wyszukiwania pliku w Eksploratorze Windows i kliknięcia prawym przyciskiem myszy pliku z wyników wyszukiwania; istnieje opcja: "Otwórz lokalizację pliku". Chcę zaimplementować to samo w moim WinForm C#. Zrobiłem to:Lokalizacja otwartego pliku

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

Czy istnieje lepszy sposób to zrobić?

+1

Na czym polega problem z rozwiązaniem? jeśli 'openFileDialog_View' jest OpenFileDialog, to pojawi się okno dialogowe z monitem o ** otwarcie ** pliku. – gideon

+0

Chcę jakiejś alternatywy i lepszego sposobu, jeśli w ogóle? –

+1

Zobacz moją odpowiedź wtedy :) – gideon

Odpowiedz

28

Jeśli openFileDialog_View to , pojawi się okno dialogowe z monitem o otwarcie pliku przez użytkownika. Zakładam, że faktycznie chcesz otworzyć lokalizację w Eksploratorze.

Można by to zrobić:

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

Aby wybrać plik explorer.exe zajmuje /select argumentu takiego:

explorer.exe /select, <filelist> 

mam to od SO postu: Opening a folder in explorer and selecting a file

Twoje kod byłby następujący:

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

to powinno być "explorer.exe" – scartag

+0

miły Pan Gideon. ale chcę, aby ten plik został wybrany, jak? –

+1

@ H_wardak Zaktualizowano moją odpowiedź. Proste [wyszukiwanie google] (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 = & aq = & aqi = & aql = & gs_sm = & gs_upl = & gs_l = & pbx = 1 & fp = 237055d012d02b32 & ix = sea & ion = 1 & bav = on.2, or.r_gc.r_pw.r_cp.r_qf., Cf.osb i biw = 1366 & bih = 643) wylądował mnie na to stanowisko SO. – gideon

4

Tak to robię w moim kodzie. Spowoduje to otwarcie katalogu plików w eksploratorze i wybranie określonego pliku w taki sam sposób, w jaki działa program Windows Explorer.

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

Czy są jakieś korzyści, jeśli używam "ProcessStartInfo"? Bez niego też działa. –

Powiązane problemy