tutorial español c# .net wpf winforms

c# - tutorial - wpf vs winforms español



Elegir una carpeta con.NET 3.5 (4)

En una aplicación C .NET 3.5 (una combinación de WinForms y WPF), deseo permitir que el usuario seleccione una carpeta para importar una carga de datos. Por el momento, está utilizando System.Windows.Forms.FolderBrowserDialog pero eso es un poco cojo. Principalmente porque no puede escribir la ruta en él (por lo que necesita asignar una unidad de red, en lugar de escribir una ruta UNC).

Me gustaría algo más parecido a System.Windows.Forms.OpenFileDialog , pero para carpetas en lugar de archivos.

¿Qué puedo usar en su lugar? Una solución WinForms o WPF está bien, pero preferiría no invocar en la API de Windows si puedo evitarla.


¡No lo crees tú mismo! Se ha hecho. Puede usar FolderBrowserDialogEx - una derivada reutilizable del FolderBrowserDialog incorporado. Esta le permite escribir una ruta, incluso una ruta UNC. También puede buscar computadoras o impresoras con él. Funciona igual que el FBD incorporado, pero ... mejor.

Código fuente completo. Gratis. Licencia MS-Public.

Código para usarlo:

var dlg1 = new Ionic.Utils.FolderBrowserDialogEx(); dlg1.Description = "Select a folder to extract to:"; dlg1.ShowNewFolderButton = true; dlg1.ShowEditBox = true; //dlg1.NewStyle = false; dlg1.SelectedPath = txtExtractDirectory.Text; dlg1.ShowFullPathInEditBox = true; dlg1.RootFolder = System.Environment.SpecialFolder.MyComputer; // Show the FolderBrowserDialog. DialogResult result = dlg1.ShowDialog(); if (result == DialogResult.OK) { txtExtractDirectory.Text = dlg1.SelectedPath; }


Después de horas de buscar una solución similar, encontré esta respuesta de leetNightShade a una solución de trabajo .

Hay tres cosas que creo que hacen que esta solución sea mucho mejor que todas las demás.

  1. Es simple de usar. Solo requiere que incluya dos archivos (que se pueden combinar de todos modos) en su proyecto.
  2. Se recurre al FolderBrowserDialog estándar cuando se usa en sistemas XP o anteriores.
  3. El autor otorga permiso para usar el código para cualquier propósito que usted considere apropiado.

    No hay licencia como tal que pueda tomar y hacer con el código.

Descargue el código aquí .


Hasta ahora, en base a la falta de respuestas a mi pregunta idéntica , asumiría que la respuesta es lanzar tu propio diálogo desde cero.

He visto cosas aquí y allá sobre la subclasificación de los cuadros de diálogo comunes de VB6 y creo que esto podría ser parte de la solución, pero nunca he visto nada sobre cómo modificar lo que el diálogo cree que está seleccionando. Sería posible a través de .NET a través de PInvoke y algunos otros trucos, pero todavía tengo que ver el código que lo hace.

que es posible y no es específico de Vista porque Visual Studio lo ha hecho desde VS 2003.

¡Espero que alguien responda ya sea el tuyo o el mío!


Lamentablemente, no hay más diálogos que FolderBrowserDialog para la selección de carpetas. Necesita crear este diálogo usted mismo o usar PInvoke.