none
Selecionar varios CheckBoxes con otro Checkbox RRS feed

  • Pregunta

  • Saludos,

    Quisiera que alguien me pueda ayudar en este dilema, gracias por adelantado. Lo he realizado pero el codigo necesario es demasiado largo y repetitivo, por lo que si alguien me ayudara, estaria muy agradecido. Lo que quiero hacer es una lista de opciones con CheckBox con el cual al darle a un un solo CheckBox, se pueda activar la lista de opciones. Ejemplo:

    Selecionar Todos ■

    -Azul ■

    -Rojo ■

    -Negro ■

    -Verde ■

    Al hacer Click en "Selecionar Todos", se seleccionaran los demas CheckBoxes "Azul, Rojo, Negro, Verde".

    Ademas, si se seleccionaran todos los CheckBoxes de los Colores, el CheckBox de "Selecionar Todos" tambien se deberia de activar.

    martes, 3 de marzo de 2020 22:37

Respuestas

  • Hola luis D"

    intenta con esto

    las variables uno y dos son para desabilitar el checkedChanged diferente al que se requiere

    si checas el primero desbilita los otros cuatro

    si checas alguno de los cuatro desabilita el primero

    Public Class Form1
        Dim uno As Boolean = False
        Dim dos As Boolean = False
    
        Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
            If dos Then
                Return
            End If
            uno = True
            CheckBox2.CheckState = CheckBox1.CheckState
            CheckBox3.CheckState = CheckBox1.CheckState
            CheckBox4.CheckState = CheckBox1.CheckState
            CheckBox5.CheckState = CheckBox1.CheckState
            uno = False
        End Sub
    
        Private Sub CheckBoxs_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox5.CheckedChanged, CheckBox4.CheckedChanged, CheckBox3.CheckedChanged, CheckBox2.CheckedChanged
            If uno Then
                Return
            End If
            dos = True
    
            If CheckBox2.CheckState = CheckState.Checked And CheckBox3.CheckState = CheckState.Checked And CheckBox4.CheckState = CheckState.Checked And CheckBox5.CheckState = CheckState.Checked Then
                CheckBox1.CheckState = CheckState.Checked
            Else
                CheckBox1.CheckState = CheckState.Unchecked
            End If
            dos = False
        End Sub
    
    End Class

    • Propuesto como respuesta Pablo Rubio miércoles, 4 de marzo de 2020 16:43
    • Marcado como respuesta Luis D'' miércoles, 25 de marzo de 2020 23:11
    miércoles, 4 de marzo de 2020 4:59

Todas las respuestas

  • Hola Luis

    Podrías escribir algo así:

    private void SeleccionarTodos_CheckedChanged(object sender, EventArgs e)
    {
        if (SeleccionarTodos.Checked)    
        {    
            SeleccionarTodos.Text = "Deseleccionar todos";
            Azul.Checked = Rojo.Checked = Negro.Checked = Verde.Checked = true;
        }
        else
        {
            SeleccionarTodos.Text = "Seleccionar todos";
            Azul.Checked = Rojo.Checked = Negro.Checked = Verde.Checked = false;    
        }
    }
    

    Saludos

    Pablo

    • Propuesto como respuesta Pablo Rubio miércoles, 4 de marzo de 2020 16:43
    • Marcado como respuesta Luis D'' miércoles, 25 de marzo de 2020 23:11
    • Desmarcado como respuesta Luis D'' miércoles, 25 de marzo de 2020 23:12
    martes, 3 de marzo de 2020 23:04
  • Saludos Pablo

    Lo aplique en este codigo:

     Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
            If CheckBox1.Checked Then
                CheckBox2.Checked = CheckBox3.Checked = CheckBox4.Checked = CheckBox5.Checked = CheckBox6.Checked = CheckBox7.Checked = CheckBox8.Checked = CheckBox9.Checked = CheckBox10.Checked = CheckBox11.Checked = True
    
            Else
                CheckBox2.Checked = CheckBox3.Checked = CheckBox4.Checked = CheckBox5.Checked = CheckBox6.Checked = CheckBox7.Checked = CheckBox8.Checked = CheckBox9.Checked = CheckBox10.Checked = CheckBox11.Checked = False
            End If
        End Sub

    Pero no funciona.

    Gracias por tu respuesta.

    miércoles, 4 de marzo de 2020 3:09
  • Hola:

     Podrías iterar a través de todos los controles Checkbox de tu formulario:

    Public Class Form1
        Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
    
    
            Dim cControl As CheckBox
                For Each cControl In Me.Controls
                    If (TypeOf cControl Is CheckBox) Then
                        cControl.Checked = CheckBox1.Checked
                    End If
                Next cControl
    
    
        End Sub
    End Class
    

    Espero te sea de utilidad.


    Saludos desde Monterrey, Nuevo León, México!!!

    • Propuesto como respuesta Pablo Rubio miércoles, 4 de marzo de 2020 16:43
    miércoles, 4 de marzo de 2020 3:58
  • Muchas gracias por tu respuesta, ha funcionado casi perfectamente.

    Resulta que no es necesario la primera linea de código:

    Public Class Form1
        Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
    
    
            'Dim cControl As CheckBox
                For Each cControl In Me.Controls
                    If (TypeOf cControl Is CheckBox) Then
                        cControl.Checked = CheckBox1.Checked
                    End If
                Next cControl
    
    
        End Sub
    End Class

    Gracias una vez mas, me fue de utilidad.

    Saludos desde Rep. Dominicana!

    • Propuesto como respuesta Pablo Rubio miércoles, 4 de marzo de 2020 16:43
    miércoles, 4 de marzo de 2020 4:57
  • Hola luis D"

    intenta con esto

    las variables uno y dos son para desabilitar el checkedChanged diferente al que se requiere

    si checas el primero desbilita los otros cuatro

    si checas alguno de los cuatro desabilita el primero

    Public Class Form1
        Dim uno As Boolean = False
        Dim dos As Boolean = False
    
        Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
            If dos Then
                Return
            End If
            uno = True
            CheckBox2.CheckState = CheckBox1.CheckState
            CheckBox3.CheckState = CheckBox1.CheckState
            CheckBox4.CheckState = CheckBox1.CheckState
            CheckBox5.CheckState = CheckBox1.CheckState
            uno = False
        End Sub
    
        Private Sub CheckBoxs_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox5.CheckedChanged, CheckBox4.CheckedChanged, CheckBox3.CheckedChanged, CheckBox2.CheckedChanged
            If uno Then
                Return
            End If
            dos = True
    
            If CheckBox2.CheckState = CheckState.Checked And CheckBox3.CheckState = CheckState.Checked And CheckBox4.CheckState = CheckState.Checked And CheckBox5.CheckState = CheckState.Checked Then
                CheckBox1.CheckState = CheckState.Checked
            Else
                CheckBox1.CheckState = CheckState.Unchecked
            End If
            dos = False
        End Sub
    
    End Class

    • Propuesto como respuesta Pablo Rubio miércoles, 4 de marzo de 2020 16:43
    • Marcado como respuesta Luis D'' miércoles, 25 de marzo de 2020 23:11
    miércoles, 4 de marzo de 2020 4:59
  • Perfecto!

    Muchas gracias, me has ayudado bastante. Ahora solo debo de hacer el código lo mas corto y eficiente posible para manejar como a... 40 CheckBoxes.

    Una vez mas, gracias y que pases un Buen Día.

    jueves, 5 de marzo de 2020 4:46
  • si te sirvio marcal como resuelta para que los que tengan la misma duda encuentren la respuesta
    jueves, 5 de marzo de 2020 5:23