Mostrar un nodo de un TreeView

25/10/2005 - 04:22 por Daltonic | Informe spam
Muy buenas.

Tengo un Treeview en el que cada nodo me muestra unos datos en un
formulario editable. (Estoy en Windows Form).
Una vez que edito y salvo los datos, vuelvo a "recargar" el TreeView,
pues el nombre del nodo es uno de los campos que he podido editar en el
formulario.
Mi problema es que el árbol me aparece "contraído", sin expandir. El
nombre del nodo aparece ya actualizado, pero me gustaría que el árbol
estuviera expandido hasta dicho nodo.
He estado probando de varias formas (selectednode, getnodeat...), pero
no doy con la tecla.
Si alguien me puede echar una mano, le estaré agradecido.

Un saludo.

Preguntas similare

Leer las respuestas

#6 Daltonic
25/10/2005 - 18:02 | Informe spam
Respecto al código anterior que os mandé, que no me funcionaba:

nodoActual = tvMenu.SelectedNode;
this.RellenaTreeView();
tvMenu.SelectedNode = nodoActual;
nodoActual.Expand();

He dado con una solución un poco más cutre:

-

nodoActual = tvMenu.SelectedNode;
int subSeccion = nodoActual.Parent.Index;
//"nombre" es el nombre (text) del nodo actualizado
string nombre = detalles.Nombre;

this.RellenaTreeView();

int i = 0;
while (!(tvMenu.Nodes[0].Nodes[subSeccion].Nodes[i].Text.Equals(nombre)))
{
i++;
}

tvMenu.SelectedNode = tvMenu.Nodes[0].Nodes[subSeccion].Nodes[i];

-

Cutre, pero funciona...
Funciona porque cuando se ejecuta ese código sé la estructura del árbol.
El problema es que si me diera por cambiarlo, tendría que modificar el
código...

En fin...
Si alguien sabe una manera mejor, por favor, que me la indique.
Gracias de antemano.



Grave error el mío, el nodoActual ha de ser asignado antes de la
actualización del TreeView. Quedaría:

nodoActual = tv.SelectedNode;
this.RellenaTreeView();
tv.SelectedNode = nodoActual;
nodoActual.Expand();

Pero sigue sin funcionar...




Sigo sin dar con la tecla...
Lo que hago es crearme una variable global 'nodoActual'.

En el evento "AfterSelect" del TreeView (al que llamo 'tv'):
nodoActual = tv.SelectedNode;

Y una vez actualizado el TreeView:
this.RellenaTreeView(); tv.SelectedNode = nodoActual;
nodoActual.Expand();

Esto no me funciona. Seguiremos investigando...



Cuando seleccionas el nodo lo copias a una variable TreeNode
(ultimoNodoSeleccionado) y despues expandes este nodo
(ultimoNodoSeleccionado) , supongo que funcionara




"Daltonic" escribió en el mensaje
news:

Gracias José Luis, pero el problema que tengo es cómo averiguar en qué
nodo estoy en este momento, y una vez que actualice el TreeView, cómo
volver a ese mismo nodo.



Un Treeview tiene una colección de 'Nodes', si quieres expandir
colocate







en

el nodo deseado (TreeView.Node[x].Expand()) y ejecuta la función







Expand().

También tienes la función ExpandAll() y Collapse() que estan







relacionadas

con el mismo tema.


Saludos
"Daltonic" escribió en el mensaje
news:


Muy buenas.

Tengo un Treeview en el que cada nodo me muestra unos datos en un
formulario editable. (Estoy en Windows Form).
Una vez que edito y salvo los datos, vuelvo a "recargar" el TreeView,









pues

el nombre del nodo es uno de los campos que he podido editar en el
formulario.
Mi problema es que el árbol me aparece "contraído", sin expandir. El
nombre del nodo aparece ya actualizado, pero me gustaría que el árbol
estuviera expandido hasta dicho nodo.
He estado probando de varias formas (selectednode, getnodeat...),
pero









no

doy con la tecla.
Si alguien me puede echar una mano, le estaré agradecido.

Un saludo.













email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida