Visual CSharp .NET - Treeview check marcar nodo Padre e hijos o desmarcar y duda.

 
Vista:
sin imagen de perfil
Val: 13
Ha mantenido su posición en Visual CSharp .NET (en relación al último mes)
Gráfica de Visual CSharp .NET

Treeview check marcar nodo Padre e hijos o desmarcar y duda.

Publicado por Juan (8 intervenciones) el 11/07/2019 23:21:13
El codigo siguiente marca todos los nodos hijos si se selecciona el nodo padre
y marca al nodo padre si se selecciona alguno de sus hijos, si no estan marcado ninguno hijo el nodo padre no se marca.
sirve en el evento aftercheck

Duda como puedo hacer que solo me permita marcar un nodo hijo a la vez, algo asi como un radio button que solo me permita una opcion y no marcar multiples nodos hijos del nodo padre solo uno a la vez

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
40
41
42
43
44
45
46
47
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
 
    //
    // Se remueve el evento para evitar que se ejecute nuevamente por accion de cambio de estado 
    // en esta operacion
    //
    treeView1.AfterCheck -= treeView1_AfterCheck;
 
 
 
    // El if de siguiente sirve para cuando uno o mas de los nodos hijos esta seleccionado
    // el nodo padre se seleccione y cuando ninguno de los hijos este seleccionado
    // el nodo padre se deseleccione
    if (e.Node.Parent != null)
    {
 
        bool result = false;
        foreach (TreeNode node in e.Node.Parent.Nodes)
        {
            if (node.Checked)
            {
 
                result = true;
                break;
            }
        }
        e.Node.Parent.Checked = result;
    }
 
    //
    // Se valida si el nodo tiene hijos
    // si los tiene se recorren y asignan el estado del nodo que se esta evaluando
    //
    if (e.Node.Nodes.Count > 0)
    {
        foreach (TreeNode node in e.Node.Nodes)
        {
            node.Checked = e.Node.Checked;
        }
    }
 
 
    treeView1.AfterCheck += treeView1_AfterCheck;
 
 
}
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