none
como chequear varios checkbox usando un bucle! RRS feed

  • Pregunta

  • necesito chequear varios checkbox con un ciclo for usando una variable numérica

    por ejemplo 

    mi variables es 12 por lo que necesito chequear 12 checkbox, ejemplo: 

    For i As Integer = 1 To 12

    me.checkbox[i].checked = true

    Next

    si alguien sabe la solución por favor ayuda!

    lunes, 4 de junio de 2012 8:24

Respuestas

  • Hola:

    Si los controles CheckBox los has añadido al formulario en tiempo de diseño, no es posible recorrer un bucle For ... Next porque no existe un array de controles para acceder a ellos a través de un índice, tal y como sí se podía hacer en Visual Basic clásico.

    Puedes establecer el valor que desees a la propiedad Tag de aquellos controles CheckBox que deseas verificar, y cuando desees "chequearlos" ejecutarías lo siguiente:

    ' Recorremos los controles CheckBox existentes en
    ' el formulario donde actualmente se está ejecutando
    ' éste código.
    '
    For Each chk As CheckBox In Me.Controls.OfType(Of CheckBox) ' Si la propiedad Tag del control es Nothing ' (no tiene ningún valor), continuamos con el ' bucle. ' If (chk.Tag Is Nothing) Then Continue For ' La propiedad Tag contiene un valor; ' verificamos el control CheckBox. ' chk.Checked = True Next

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.


    lunes, 4 de junio de 2012 8:34
    Moderador

Todas las respuestas

  • Hola:

    Si los controles CheckBox los has añadido al formulario en tiempo de diseño, no es posible recorrer un bucle For ... Next porque no existe un array de controles para acceder a ellos a través de un índice, tal y como sí se podía hacer en Visual Basic clásico.

    Puedes establecer el valor que desees a la propiedad Tag de aquellos controles CheckBox que deseas verificar, y cuando desees "chequearlos" ejecutarías lo siguiente:

    ' Recorremos los controles CheckBox existentes en
    ' el formulario donde actualmente se está ejecutando
    ' éste código.
    '
    For Each chk As CheckBox In Me.Controls.OfType(Of CheckBox) ' Si la propiedad Tag del control es Nothing ' (no tiene ningún valor), continuamos con el ' bucle. ' If (chk.Tag Is Nothing) Then Continue For ' La propiedad Tag contiene un valor; ' verificamos el control CheckBox. ' chk.Checked = True Next

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.


    lunes, 4 de junio de 2012 8:34
    Moderador
  • hola

    pero esos checkbox donde estan contenidos ? por lo qeu se ve es un array, pero es raro no deberian estar asignados al form

    ademas preguntas como tienes que hacerlo pero alli ya tienes el codigo que lo hace

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 4 de junio de 2012 12:05
  • Muy agradecido, gracias a tu respuesta pude lograr lo que quería. 

    el bucle me quedo de esta manera:

    'primero le asigno un valor Tag a cada checkbox que deseo recorrer. En este tengo 12 checkbox en mi form los que simbolizan los 12 meses del año
    
    Me.CheckBox1.Tag = 1 'enero
    Me.CheckBox2.Tag = 2 'febrero
    Me.CheckBox3.Tag = 3 'marzo
    Me.CheckBox4.Tag = 4 'abril
    Me.CheckBox5.Tag = 5 'mayo
    Me.CheckBox6.Tag = 6 'junio
    Me.CheckBox7.Tag = 7 'julio
    Me.CheckBox8.Tag = 8 'agosto
    Me.CheckBox9.Tag = 9 'septiembre
    Me.CheckBox10.Tag = 10 'octubre
    Me.CheckBox11.Tag = 11 'noviembre
    Me.CheckBox12.Tag = 12 'diciembre
    
    'obtengo el valor de "variable" que  es de tipo int y me indicara cuantos checkbox(meses) debo chequear, por ejemplo si variable=6 se chequearan los primeros 6 meses del año.
    
    For Each chk As CheckBox In Me.Controls.OfType(Of CheckBox)() 'luego comienza el bucle 
    
             If (chk.Tag > variable) Then Continue For
    
                chk.Checked = True
    
             If (chk.Tag <= variable) Then Continue For 'el segundo if sirve para ir actualizando los valores en caso de que varible cambie
    
                chk.Checked = False
    Next
    saludos

    • Editado italoli martes, 5 de junio de 2012 4:34
    martes, 5 de junio de 2012 4:14