2009-11-03 31 views
5

Estoy usando un control TreeView de Windows Forms en mi programa. Me gustaría permitir que el usuario seleccione varios nodos en el mismo nivel arrastrando el puntero del mouse (también llamado selección "lazo"). No creo que un TreeView estándar lo permita.Selección múltiple en TreeView

Mi pregunta es ¿cuál sería la mejor manera de lograrlo? ¿Tengo que escribir mi propio comportamiento de selección personalizado en un control personalizado o derivado? ¿Dónde empiezo?

No necesito una explicación detallada. Solo un pequeño empujón en la dirección correcta.

Respuesta

6

Esto no va a ser fácil de hacer con un control WinForms TreeView estándar. El control TreeView solo admite una selección única por árbol. No es posible seleccionar simultáneamente múltiples nodos en el árbol.

Para obtener este comportamiento, es probable que necesite crear una clase muy similar a TreeView, que permitió la selección múltiple. Otra opción es derivar de TreeView y habilitar la selección múltiple anulando comportamientos específicos. Aquí hay un artículo sobre cómo hacer esto último.

+0

Entiendo el enfoque de control personalizado para obtener la selección múltiple. ¿Qué dirección, sugerirías, debería tomar para implementar una selección de "lazo"? ¿Tengo que recurrir al dibujo personalizado de nivel GDI o hay una API o algo que expone Windows para esto, lo que puede facilitar mi trabajo? –

+0

@Frederick, no soy una gran persona para comentar sobre eso. Mi sugerencia sería abrir una nueva pregunta por separado centrada exclusivamente en cómo implementar la selección de lazo en un control WinForm genérico. Eso probablemente arroje mejores resultados. – JaredPar

+0

Gracias Jared. Haré exactamente eso. –

0

considerar la implementación de selección múltiple en un control que permite la selección múltiple como la vista de lista. Si sigue los estándares que la mayoría de los usuarios de Windows entienden, terminará con una solución que es más fácil de implementar y más fácil de usar.

Si realmente necesita algo más elaborado, es posible que deba considerar desarrollar un control personalizado.

Cuestiones relacionadas