2012-07-24 25 views
11

He publicado - How to use OpenFileDialog to select a folder?, No he podido encontrar la respuesta correcta. Entonces, he cambiado mi pregunta.C# - ¿Cómo personalizar OpenFileDialog para seleccionar varias carpetas y archivos?

Quiero personalizar OpenFileDialog para seleccionar varias carpetas y archivos. Traté de encontrar una solución y pude ver algunas publicaciones al respecto.

De internet, encontré el siguiente proyecto - https://github.com/scottwis/OpenFileOrFolderDialog.

Sin embargo, al usar esto, me enfrenté a un problema. Utiliza la función GetOpenFileName y la estructura OPENFILENAME de MFC. Y OPENFILENAME tiene el miembro llamado "templateID". Es el identificador de la plantilla de diálogo. Y el proyecto de ejemplo tiene el archivo "res1.rc" y también tiene el cuadro de diálogo de plantillas.

Pero no sé ¿Cómo puedo adjuntar este archivo a mi proyecto de C#?

¿O hay alguna otra solución perfecta acerca de "¿Cómo personalizar OpenFileDialog para seleccionar varias carpetas y archivos?"?

Respuesta

11

Si usa la propiedad FileNames en lugar de la propiedad FileName, obtiene una matriz de cadenas de cada archivo seleccionado, selecciona varios archivos con la tecla shift. De este modo:

private void button1_Click(object sender, EventArgs e) 
{ 
    OpenFileDialog x = new OpenFileDialog(); 
    x.Multiselect = true; 
    x.ShowDialog(); 
    string[] result = x.FileNames; 

    foreach (string y in result) 
     MessageBox.Show(y, "Selected Item", MessageBoxButtons.OK, MessageBoxIcon.Information); 
} 

Para los archivos y carpetas que necesita utilizar el CommonOpenFileDialog incluido con el WinAPI, la clase particular es here.

+1

Debe establecer la propiedad 'Multiselect' del' OpenFileDialog' en 'true' para que funcione :) –

+2

¿Se olvidó de" múltiples ** carpetas ** y archivos "? Quiero seleccionar las carpetas, también. – Yun

+0

Creo que necesita usar CommonOpenFileDialog en su lugar, pero debería funcionar de la misma manera, actualizaré mi respuesta en breve – JMK

2

Prueba esto:

openFileDialog.Multiselect = true; 
+0

¿Olvidaste de "múltiples ** carpetas ** y archivos"? Quiero seleccionar las carpetas, también. – Yun

+0

Debería funcionar tanto para la carpeta como para el archivo. –

1

No puede ser que consiga un sistema incorporado en el control .Net así. Definitivamente OpenFileDialog no puede funcionar tanto como File como Folder Browser. Tienes dos opciones para una herramienta de terceros como la que encontraste en segundo lugar, haz tu propio control. Sorprendentemente, puede que no sea muy difícil crear una versión muy simple de tu propio control.

+0

Gracias. ¿Tiene alguna herramienta de terceros sugerida? – Yun

+0

Nunca he usado uno ... nunca lo necesité ... pero mire estos enlaces .. http://www.ssware.com/fldrview.htm y http: //www.codeproject.com/Articles/44914/Select-file-or-folder-from-the-same-dialog –

Cuestiones relacionadas