2012-03-10 28 views
7

Al buscar un archivo en el Explorador de Windows y hacer clic con el botón derecho en un archivo de los resultados de búsqueda; hay una opción: "Abrir ubicación de archivo". Quiero implementar lo mismo en mi C# WinForm. Hice esto:Abrir la ubicación del archivo

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

¿Hay alguna manera mejor de hacerlo?

+1

¿Cuál es el problema que enfrenta con su solución? si 'openFileDialog_View' es un OpenFileDialog entonces obtendrás un cuadro de diálogo pidiendo al usuario que ** abra ** un archivo. – gideon

+0

Quiero alguna alternativa y una mejor manera si la hay? –

+1

Ver mi respuesta a continuación :) – gideon

Respuesta

28

Si openFileDialog_View es OpenFileDialog, entonces obtendrá un cuadro de diálogo pidiéndole al usuario que abra un archivo. Supongo que realmente quiere abrir la ubicación en el explorador.

Usted podría hacer esto:

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

Para seleccione un archivo explorer.exe toma un argumento /select así:

explorer.exe /select, <filelist> 

Tengo este desde un SO mensaje: Opening a folder in explorer and selecting a file

Así que su el código sería:

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

esto debería ser "explorer.exe" – scartag

+0

nice Mr. gideon. pero quiero que ese archivo sea seleccionado, ¿Cómo? –

+1

@H_wardak Actualizado mi respuesta. Un simple [búsqueda en 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 = mar & ion = 1 & bav = on.2, or.r_gc.r_pw.r_cp.r_qf., Cf.osb & biw = 1366 & bih = 643) me llevó a esa publicación SO. – gideon

4

Así es como lo hago en mi código. Esto abrirá el directorio de archivos en el explorador y seleccionará el archivo especificado tal como lo hace el explorador de Windows.

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

¿hay algún beneficio si utilizo "ProcessStartInfo"? Es trabajo sin eso también. –

Cuestiones relacionadas