2012-02-10 27 views
20

Duplicar posible:
How do you configure an OpenFileDIalog to select folders?Cómo utilizar el diálogo Abrir archivo para seleccionar una carpeta

estoy usando C# y quiero evitar por completo SelectFolderDialog para seleccionar una carpeta. En cambio, quiero usar algo más cercano a OpenFileDialog solo para seleccionar una carpeta.

Para un ejemplo más visual, Busco algo cercano (si no exactamente) como el siguiente: http://i44.tinypic.com/x38tx1.png

enter image description here

¿Alguna idea?

+3

La interfaz Vista IFileDialog de Vista expone esta opción. Disponible en el paquete de código API de Windows, clase CommonOpenFileDialog, propiedad IsFolderPicker. –

+0

@HansPassant: Si agrega eso como respuesta, lo votaré mejor. – Heinzi

+0

@HansPassant: ¿Podría dar un ejemplo de esto? Estoy de acuerdo con Heinzi. – Demasterpl

Respuesta

28

El cuadro de diálogo de selección de carpeta de Windows Vista se ve bastante similar a lo que desea. Desafortunadamente, .NET FolderBrowserDialog muestra el viejo cuadro de diálogo similar a Windows XP, que desea evitar.

Para acceder a este cuadro de diálogo al estilo de Vista, puede

  • uso alguna biblioteca .NET de terceros (por ejemplo Ookii.Dialogs),
  • utilizar las llamadas a la API de Windows o pertinentes
  • utilizar el Windows API Code Pack:

    using Microsoft.WindowsAPICodePack.Dialogs; 
    
    ... 
    
    var dialog = new CommonOpenFileDialog(); 
    dialog.IsFolderPicker = true; 
    CommonFileDialogResult result = dialog.ShowDialog(); 
    

    Tenga en cuenta que este diálogo no está disponible en sistemas operativos anteriores a Windows Vis ta, así que asegúrese de marcar CommonFileDialog.IsPlatformSupported primero.

+2

Ambos Winforms en 3.5 y WPF en 4.0 se actualizaron para usar el cuadro de diálogo de Vista. –

+0

@HansPassant: No. Acabo de probarlo: 'new FolderBrowserDialog(). ShowDialog();' en una aplicación .NET 4.0 WinForms muestra el mismo viejo y feo FolderBrowserDialog. – Heinzi

+0

Compruebe la propiedad FileDialog.AutoUpgradeEnabled. –

Cuestiones relacionadas