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
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


0