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 original
Private 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...