none
Recuperar valores de un TreeView en sus nodos raiz y sus sub nodos. RRS feed

  • Pregunta

  • Hola buenas tardes estoy haciendo la configuracion de acceso a un sistema y me pidieron que en ves de checkbox comunes lo haga con un treeview de checkbox. pero no soy muy bueno con el manejo de foreach , y realmente no se cual es la mejor manera de encararlo se que puedo hacerlo nodo a nodo como anteriormente(con los checkbox estaticos) pero creo que con un foreach seria mas eficiente el codigo. la idea es que si el nodo padre esta en True otro foreach se fije si tiene algun hijo en falso.

    Pero si esta en falso directamente me deja todos los nodos hijos en falso debido a que ya no tendria acceso a esa seccion de el sistema.

    el TreeView es asi.

    y las pruebas que estoy haciendo ahora es encontrar los valores de los que estan en falso y en verdadero , Con los padres esta todo bien pero cuando lo hago con los hijos me dice que estoy haciendo referencia a una instancia nula. y no se bien que esta mal

    private void button3_Click(object sender, EventArgs e)
            {
                foreach (TreeNode padresSeleccionados in treeConfiguracionesAcceso.Nodes)
                {
                    if (!padresSeleccionados.Checked)
                    {
                        MessageBox.Show(padresSeleccionados.Name+ " false ");
    
                    }
                    else
                    {
                        MessageBox.Show(padresSeleccionados.Name + " true " );
    
    
                        foreach (TreeNode hijosSeleccionados in treeConfiguracionesAcceso.Nodes)
                        {
                            if (padresSeleccionados.Checked)
                            {
                                MessageBox.Show(hijosSeleccionados.Nodes[padresSeleccionados.Name].Nodes[hijosSeleccionados.Name].Name + "  hijo true ");
                            }
                            else
                            {
                                MessageBox.Show(hijosSeleccionados.Nodes[padresSeleccionados.Name].Nodes[hijosSeleccionados.Name].Name + "  hijo false ");
                            }
                        }
                    }
                        
                }
            }
    La idea general es saber el estado de cada check para despues guardarlos en una Lista y mandarlos al procedimiento asi no se si me estoy enrroscando mucho.

    martes, 23 de enero de 2018 19:08