2009-01-19 17 views
21

Tengo un System.Windows.Forms.TreeView acoplado dentro de un panel. Estoy configurando un nodo seleccionado programáticamente. ¿Qué método o propiedad usaría para tener la vista en árbol desplazarse por la vista seleccionada?Desplazar el nodo TreeView seleccionado a la vista

Respuesta

33
node.EnsureVisible(); 

por ejemplo:

if(treeView.SelectedNode != null) treeView.SelectedNode.EnsureVisible(); 

(ver MSDN)

+0

Si también desea desplazar este nodo al ** top ** de 'TreeView', podría usar' treeView.TopNode = treeView.SelectedNode' después de la comprobación del valor nulo en lugar de 'treeView.SelectedNode.EnsureVisible () '. –

0

tuve algunos problemas con node.EnsureVisible() que no trabaja para árboles con un solo nivel de nodos.

Para solucionar este problema, utilice BindingIndex para identificar el nodo seleccionado. Luego, el nodo seleccionado se desplazará a la vista.

El ejemplo muestra myTable de una consulta LINQ.

node.BindingIndex = Convert.ToInt32(mytable.Id); 

Espero que esto ayude a algunos de ustedes.

1

También tuve problemas con esto y descubrió que treeview.ExpandAll() ignora el efecto EnsureVisible() y evita el desplazamiento a la posición del nodo.

Simplemente llame a EnsureVisible() después de ExpandAll() si desea un árbol completo expandido con el desplazamiento en el nodo que ha seleccionado.

Cuestiones relacionadas