¿Cómo puedo controlar las casillas de verificación en .Net Forms.TreeView?
Pregunta
Tengo una aplicación de escritorio .Net con TreeView como uno de los elementos de la interfaz de usuario.
Quiero poder realizar una selección múltiple de ese TreeView, solo que eso no es compatible en absoluto.
Así que estoy agregando casillas de verificación al árbol. Mi problema es que solo algunos elementos son seleccionables, y aquellos que no lo son no pueden realizar selecciones en cascada de manera consistente.
¿Hay alguna forma de desactivar u ocultar algunas casillas de verificación mientras se muestran otras?
Solución
El comportamiento predeterminado de TreeView es que cuando el Casillas de verificación propiedad se establece en verdadero, se mostrarán casillas de verificación para todos los TreeNodes.
El comportamiento que busca (desactivar u ocultar algunas casillas de verificación) es una modificación personalizada del comportamiento normal.Puede crear una implementación personalizada de TreeView o TreeNode que anule el comportamiento predeterminado.Otra cosa que puedes probar sería utilizar TreeView.Lista de imágenes de estado propiedad.Algunos sitios para visitar para obtener más información:
- Ver esta publicación a los foros de MSDN que pasa por una implementación similar a la que estás intentando.
- Proyecto de código: Vista de árbol de tres estados
- Proyecto de código: Cómo manejar imágenes de estado de nodo personalizadas en un TreeView (p. ej.casillas de verificación de tres estados)
Otros consejos
Tuve un problema muy similar en un editor que escribí recientemente.Al final utilicé el TreeNode
's BackColor
propiedad para determinar el estado de selección del nodo.Luego escribí un controlador para el SelectionChanged
evento que verificó el estado de las teclas Mayús/Control para determinar si el nodo seleccionado se estaba agregando o eliminando de la selección o creando una nueva selección.También hubo un Generic::List<>
de los nodos que fueron seleccionados actualmente para eliminar cualquier búsqueda de árbol.
Vista de árbol de selección múltiple:
¿Por qué .NET no tiene una vista de árbol de selección múltiple?Hay tantos usos para uno y activar las casillas de verificación en la vista de árbol es una alternativa bastante pésima.