Comportamiento de doble clic de TreeView en.NET/C#
winforms double-click (2)
Hacer doble clic en TreeNode es un gesto del mouse que ya ha sido "utilizado" por TreeView para colapsar / expandir nodos Microsoft no empuja los estándares de UI tanto como Apple, y en cierto nivel es decepcionante que Microsoft haya expuesto NodeDoubleClick, porque lo alientan a modificar TreeView con su propio comportamiento personalizado. Esto puede ser engañoso para los usuarios finales, que esperan un comportamiento común de los controles comunes.
Desde el diseño de la interfaz de usuario de Ben Shneiderman , la primera de las ocho reglas de oro del diseño de interfaz :
- Esfuérzate por la coherencia.
Secuencias de acciones consistentes deberían ser requeridas en situaciones similares; se debe usar una terminología idéntica en los avisos, menús y pantallas de ayuda; y se deben emplear comandos consistentes en todas partes.
Para resumir, tal vez no deberías estar usando NodeMouseDoubleClick.
Tengo un control de vista de árbol .NET Windows Forms regular. Los nodos están configurados así:
Grupo
---niño
---niño
Si hago doble clic en un nodo Grupo colapsado, se expande (como era de esperar) y el evento NodeMouseDoubleClick se desactiva, donde mi código hace algo si el nodo seleccionado NO es un nodo grupal.
El problema surge cuando el Grupo está ubicado cerca de la parte inferior de la vista de árbol, por lo que cuando hago doble clic en el nodo Grupo, se requiere que la vista en árbol se expanda verticalmente para que los nodos secundarios entren en la vista. En tales casos, si hago doble clic en el nodo Grupo, cuando se expande y ajusta la vista en árbol, el cursor del mouse está sobre un nodo secundario (tuvo que empujar todo hacia arriba) y eso hace que NodeMouseDoubleClick piense en el nodo secundario está seleccionado, lo que causa un comportamiento muy extraño.
¿Cómo puedo evitar esto? ¿No debería usar NodeMouseDoubleClick o ...?
Veo que también se explicó en el informe de comentarios. El problema con el evento TreeView DoubleClick después de expandir / colapsar causó el cambio de desplazamiento .
NodeDoubleClick
está bien, pero en lugar de usar el e.Node
, use this.treeView1.SelectedNode
.