2010-04-06 15 views
8

Estoy tratando de mostrar el menú contextual estándar de archivo/directorio en la aplicación WinForms - Me gustaría permitir al usuario hacer cosas con archivos en mi aplicación como él podría en Explorer.Mostrando el menú contextual de Windows (archivo/directorio) en la aplicación C# winforms

Debe haber dos opciones

  • emergentes en el menú contextual con alguna llamada al sistema
  • leer todo, desde el menú de contexto del sistema e insertarlo en mi menú de contexto

Podría por favor apunte yo en la dirección correcta? Gracias

Respuesta

7

He escrito una biblioteca de .NET para permitir esto. Lo puedes encontrar aquí:

http://gong-shell.sourceforge.net/

La clase que se está buscando es ShellContextMenu dentro de esa biblioteca.

+0

Groky esa biblioteca que ha creado es increíble. No sé mucho sobre las formas ganadoras, así que me ha costado trabajo intentar ver cómo implementó el menú contextual. Necesito implementar eso en wpf. Estoy seguro de que será un ensayo implementarlo en wpf una vez que sepa cómo hacerlo en formas ganadoras. –

+0

Además, no necesito que se vea como el cuadro de diálogo de archivo. Solo tengo un contenedor en mi aplicación wpf que muestra archivos (iconos con etiquetas) y me gustaría permitirles a los usuarios ver el mismo menú contextual que ven cuando hacen clic derecho en ese archivo en el explorador de Windows. –

+0

@TonoNam: desafortunadamente no implementé el menú contextual. Acabo de utilizar la API de Shell de Windows para mostrar el menú contextual utilizado por Explorer. No tengo idea de cómo implementarlo en WPF, o incluso si eso fuera posible, lo siento. – Grokys

3

Esto puede llegar a ser muy difícil, por lo que propone dos soluciones:

  1. (Fácil) El uso de la biblioteca que Groky sugirió, hacer lo que se hace en FolderSizes. El menú contextual Explorer se muestra como un menú secundario contextual. Puede simular esto mostrando el menú del explorador cuando la opción "Explorar operación" está suspendida.

    enter image description here

  2. (duro) Si eso no es suficiente, puede ir hasta el final y obtener los elementos de menú de la cáscara, y crear su propio menú. Este artículo de CodeProject (http://www.codeproject.com/KB/miscctrl/FileBrowser.aspx) pasa por el proceso de enumerar e invocar comandos de shell para un objeto de shell específico y cómo enumerar submenús.

+0

Kevin agradece mucho por la ayuda. Tuve un día ocupado. Lo revisaré lo antes posible. –

Cuestiones relacionadas