Visual Basic.NET - SelectNode selecciona otro nodo?

 
Vista:

SelectNode selecciona otro nodo?

Publicado por Leo (2 intervenciones) el 23/08/2011 02:31:26
Hola!

Tengo un problema; tengo un treeview al que le cargo nodos, luego quiero seleccionar uno específicamente pero se selecciona cualquier otro. El código es éste:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
70:          F.treGrupos.Nodes.Clear()
 
                  'ahora cargo los nodos primarios
 
90:             For Each g In m_ModeloGruposSeleccionado.Grupos
100:                n = F.treGrupos.Nodes.Add("g" & g.Value.s_IdGrupo.ToString, g.Value.s_IdGrupo.ToString)
110:            Next
 
                'cargué los grupos en el árbol, ahora cargo los elementos (subnodos) de acuerdo el grupo
 
120:            For Each Item In m_ConsultaSeleccionada.Indice
130:                If F.treGrupos.Nodes.ContainsKey("g" & Item.Value.IdGrupo) Then 'comprobacion de rutina
140:                    n = F.treGrupos.Nodes("g" & Item.Value.IdGrupo) 'selecciono el nodo "base"
150:                    If Not n Is Nothing Then 'si encontré el nodo, hay un grupo 'comprobación de rutina
160:                        n.Nodes.Add("g" & Item.Key.ToString, Item.Value.ItemNodo)
190:                    End If
200:                Else
230:            Next
 
                  'hasta aqui todo funciona perfecto, ahora viene la parte con problemas
 
                  F.treGrupos.SelectedNode = Nothing
                  F.treGrupos.CollapseAll()
 
 
                'm_seleccionado contiene el código del nodo que quiero seleccionar
 
270:            If m_GrupoSeleccionado > 0 Then
 
                    For Each n1 In F.treGrupos.Nodes 'solo recorre los nodos "base"
                        If n1.Name = "g" & m_GrupoSeleccionado.ToString Then
                            Debug.Print(n1.Name) 'comprobacion de que encontró el nodo que coincide con el código; cosa que resulta exitosa
                            F.treGrupos.SelectedNode = n1
                            n1.ExpandAll()
                            Exit For
                        End If
                    Next
 
390:        End If



Bueno, la cosa es que a veces, cuando ejecuto esta función que limpia el árbol, lo arma nuevamente e intenta seleccionar uno de los nodos, selecciona cualquier cosa. Por ejemplo, m_gruposeleccionado contiene "2", y en lugar de seleccionarme el segundo nodo primario (el "g2"), selecciona, por ejemplo, un subnodo (al azar?) del nodo 1 o del nodo 4, abriendo la rama de esos nodos. No le encuentro sentido en absoluto.

¿Alguien tiene alguna idea?

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

SelectNode selecciona otro nodo?

Publicado por Damian (824 intervenciones) el 26/08/2011 14:48:36
No estas poniendo el evento de cuando se selecciona el nodo, igual te conviene poner un break y abrir la ventana inmediato para ir viendo como son cargados esos nodos, capaz que hay un problema de desorden.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SelectNode selecciona otro nodo?

Publicado por Leo (2 intervenciones) el 30/08/2011 01:02:38
Hola!

Muchas gracias por tu respuesta! Efectivamente, se me había pasado pegar un pedazo de código, que recorté para que fuera más simple entenderlo. La parte de la selección del nodo activo sería ésta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
270:            If m_GrupoSeleccionado > 0 Then
 
 
280:                n1 = F.treGrupos.Nodes("g" & m_GrupoSeleccionado.ToString)
 
                    Debug.Print(n1.Name)
 
290:                If Not n1 Is Nothing Then
310:                    F.treGrupos.SelectedNode = n1
300:                    n1.ExpandAll()
320:                End If
 
                    Debug.Print(F.treGrupos.SelectedNode.Name)
 
330:            End If



ves que hago 2 debug.print con el nodo seleccionado, y ambos me imprimen correctamente el nodo que quiero seleccionar/supuestamente seleccionado.

El problema es que en la ventana no está "seleccionado" el nodo seleccionado, es decir, el nodo que aparece resaltado con fondo azul es otro, ni siquiera uno del primer nivel.

Agradezco cuaquier ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar