Hola,
Tengo un grupo de chekBox que creo dinamicamente según una base de datos, al frente de estos checkbox, creo dos radiobuttons dinamicos contenidos en un panel.
ejemplo:
PRUEBAS APROBADO NOAPROBADO
---CHK--- ---OPT_A--- ---OPT_B---
---CHK--- ---OPT_A--- ---OPT_B---
Este es el codigo:
Código vb:
Ver original'Crear checkbox dinamicamente
Public Sub CrearCasillas()
Dim Consulta As String
Dim ds As New DataSet
Consulta = "SELECT * FROM AUTORIZACION_TAB"
Try
'Se ejecuta la consulta
ADONet_Query(ds, Consulta)
Dim k As Integer = 1
'Se recorren los datos de la consulta
For i = 0 To ds.Tables(0).Columns.Count - 1 Step 1
'Se devuelve una cadena con determinado 7 caracteres
Dim titulocampo As String = Mid(ds.Tables(0).Columns(i).ColumnName, 1, 7)
'Si la cadena devuelta es igual a PRUEBA_
If titulocampo = "PRUEBA_" Then
'Se extraen los 7 primeros caracters de la cadena
Dim nombre As String = ds.Tables(0).Columns(i).ToString.Remove(0, 7)
'Se crea el checkbox
Dim chk_pruebas = New CheckBox
Dim opt_aprobado = New RadioButton
Dim opt_noaprobado = New RadioButton
Dim panel_opt = New Panel
Dim panel_chk = New Panel
'Se establecen propiedades por defecto
With chk_pruebas
.Text = nombre
.Name = "chk_" + nombre
.Size = New System.Drawing.Size(200, 17)
.Font = New System.Drawing.Font("Arial", 8, FontStyle.Bold)
.Location = New System.Drawing.Point(34, 10)
End With
'Se establecen propiedades por defecto
With opt_aprobado
.Text = nombre
.Name = "opt_aprobado_" + nombre
.Enabled = False
.Size = New System.Drawing.Size(17, 16)
.Location = New System.Drawing.Point(34, 10)
End With
'Se establecen propiedades por defecto
With opt_noaprobado
.Text = nombre
.Name = "opt_noaprobado_" + nombre
.Enabled = False
.Size = New System.Drawing.Size(17, 16)
.Location = New System.Drawing.Point(150, 10)
End With
With panel_chk
.Name = "panel_" + nombre
.BackColor = Color.PapayaWhip
.BorderStyle = BorderStyle.Fixed3D
.Size = New System.Drawing.Size(285, 37)
.Location = New System.Drawing.Point(0, k * 32)
.Controls.Add(chk_pruebas)
End With
With panel_opt
.Name = "panel_" + nombre
.BackColor = Color.PapayaWhip
.BorderStyle = BorderStyle.Fixed3D
.Size = New System.Drawing.Size(233, 37)
.Location = New System.Drawing.Point(0, k * 32)
.Controls.Add(opt_aprobado)
.Controls.Add(opt_noaprobado)
End With
k += 1
'Se adiccionan los checkbox al panel
Me.panel_check.Controls.Add(panel_chk)
Me.panel_controles.Controls.Add(panel_opt)
'Se crea un evento delegado cada de chk_pruebas cada vez que un chekbox cambie
AddHandler chk_pruebas.CheckedChanged, AddressOf CheckBox_CheckedChanged
End If
Next i
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Accedo a los checkBox de la siguiente forma:
Código vb:
Ver originalPrivate Sub CheckBox_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
'Se crea objeto que hereda todos los chekbox
Dim checkBox As CheckBox = TryCast(sender, CheckBox)
'Se muestra si el checkbox esta chekqueado o no
If checkBox IsNot Nothing Then
Dim titulochk As String = checkBox.Name.Remove(0, 4)
'opt_botones.Enabled = True
' MessageBox.Show(checkBox.CheckState)
MessageBox.Show(titulochk)
End If
End Sub
Lo que quiero hacer es que cuando los checkbox se activen, se coloque la propiedad de los radiobuttons enabled = true y si se desactivan de nuevo en false. Y tambien recorrerlos para guardar en la base de datos
Espero me haya hecho entender...