Foros del Web » Programación para mayores de 30 ;) » .NET »

Control eventos para checkbox generados en tiempo ejecución

Estas en el tema de Control eventos para checkbox generados en tiempo ejecución en el foro de .NET en Foros del Web. Buenas a todos, espero me puedan ayudar. Mediante código, y según la cantidad de elementos que tengo en una matriz, creo tantos "ChecksBox" dentro de ...
  #1 (permalink)  
Antiguo 02/10/2007, 05:16
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 18 años, 4 meses
Puntos: 2
Control eventos para checkbox generados en tiempo ejecución

Buenas a todos, espero me puedan ayudar. Mediante código, y según la cantidad de elementos que tengo en una matriz, creo tantos "ChecksBox" dentro de un control Panel. Como en el código siguiente:
Código:
For i=1 To (matriz.Length)
         panel.Controls.Add(New System.Windows.Forms.CheckBox())
Next i
Los coloco donde tienen que ir, les doy el texto que deben de tener, tipo de fuente, etc.
Ahora bien mi duda existencial es, como controlo el Evento CheckStateChanged de cada control CheckBox que he creado en tiempo de ejecución.
¿Es posible?
Espero que me puedan ayudar.

Muchas gracias anticipadas.
__________________
www.hellfreak.es
  #2 (permalink)  
Antiguo 02/10/2007, 06:51
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 21 años
Puntos: 76
Re: Control eventos para checkbox generados en tiempo ejecución

Cita:
Iniciado por dirty79 Ver Mensaje
Código:
For i=1 To (matriz.Length)
         panel.Controls.Add(New System.Windows.Forms.CheckBox())
Next i
En C# yo lo haria asi:

En un ciclo como tu lo tienes tendria esto:

Código:
//Instancia de un objeto tipo checbox
CheckBox myChk = new CheckBox();
//Asiganacion del evento
myChk.CheckStateChanged += new EventHandler(myChk_CheckStateChanged);
//Agregamos al panel
panel.Controls.Add(myChk)
Si lo hago en una sola linea como tu lo tienes no podria asignar el evento.

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)
  #3 (permalink)  
Antiguo 02/10/2007, 06:58
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 18 años, 4 meses
Puntos: 2
Re: Control eventos para checkbox generados en tiempo ejecución

Ok perfecto, pero si lo que hago es dependiendo de la longitud de la matriz crear un checkbox por cada dimension de la matriz, ¿como hago para que dentro del bucle For se le adjudique un nombre distinto a cada checkbox generado?.
¿Y después poder definir el código para cada evento checkBox.CheckStateChanged. No se si me explico.
__________________
www.hellfreak.es
  #4 (permalink)  
Antiguo 02/10/2007, 08:50
 
Fecha de Ingreso: marzo-2007
Mensajes: 103
Antigüedad: 18 años
Puntos: 1
Re: Control eventos para checkbox generados en tiempo ejecución

yo tengo este codigo que hacia lo mismo pero con textbox, es en VB ..aca se le da un nombre diferente a cada checkbox.


For i As Integer = 0 To (vecPalabras(numeroPalabra).Length - 1)
Dim x As New Label
x.Location = New Point(px, 20)
x.Size = New Size(40, 50)
x.BorderStyle = BorderStyle.Fixed3D
x.Name = "label" & i
x.Font = New System.Drawing.Font("Microsoft Sans Serif", 30.0!, CType((System.Drawing.FontStyle.Bold Or System.Drawing.FontStyle.Italic), System.Drawing.FontStyle), System.Drawing.GraphicsUnit.Point, CType(0, Byte))
x.TextAlign = ContentAlignment.BottomCenter
x.BringToFront()
If vecPalabras(numeroPalabra).Substring(i, 1) <> " " Then
x.Text = "_"
x.BackColor = Color.White
Else
x.Text = " "
x.BackColor = Color.Black
End If
Controls.Add(x)
px += 40
Next


la otra parte de tu pregunta, en realidad no la entiendo bien.
__________________
Julio César Guzmán Góngora
Microsoft Certified Professional
[email protected]
[email protected]
  #5 (permalink)  
Antiguo 02/10/2007, 11:41
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 19 años, 8 meses
Puntos: 50
Re: Control eventos para checkbox generados en tiempo ejecución

Son una serie de pasos algo complicados pero sencillos

paso 1: Crea un método en tiempo de diseño quitando en "handles" y dándole el nombre que desees dejando dentro como parámetro el sender y el eventargs, es decir, inserta cualquier checkbox dale doble click y después borras el control, de esta forma e indicándote lo que te acabo de explicar te quedará una función así:

Código:
Private Sub tuCheckX_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

End Sub
paso 2: le insertas código, para ello tendrías que ocupar el sender, casi nadie o mejor dicho nadie sabe por que lo coloca el manejador allí, bueno, puedes usarlo para controlar varios objetos, esto es:

Código:
Private Sub tuCheckX_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
If CType(sender,CheckBox).Name = "check1" Then
... 
ElseIf CType(sender,CheckBox).Name = "check2" Then
...
ElseIf CType(sender,CheckBox).Name = "checkN" Then
.
.
.
End If
End Sub
En cada pedazo de IF irá el código alusivo a lo que tu necesites, ese método tu lo mueves como se te antoje

Paso 3: lo bueno es asignarlo, para ello:

Código:

For i=1 To (matriz.Length)
Dim x As New CheckBox x.Name = "check" & i x.Text = "check box numero " & i 'no te olvides de especificar su location panel.Controls.Add(x) 'ASIGNAMOS EL MÉTODO CREADO POR TI Dim n As New EventHandler(AddressOf tuCheckX_CheckedChanged) 'ASIGNAMOS EL HANDLER Y TODO LISTO AddHandler x.CheckedChanged, n
Next i
y, cuando ejecutes tu aplicación, cada check box que creaste con la matriz se vinculara con el método antes asignado en el punto 1.

Espero te haya servido este pequeño tutorial, si te confundes por aquí andamos para cualquier cosa
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #6 (permalink)  
Antiguo 02/10/2007, 11:46
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 18 años, 4 meses
Puntos: 2
Re: Control eventos para checkbox generados en tiempo ejecución

Muchas gracias por vuestras respuestas.
Mira la idea que tengo es la de crear tantos controles CheckBox como dimensiones tengo en una matriz. Hasta aquí ningún problema. Lo hago con el código siguiente:
Código:
For i=1 To ((matriz.Length))
	panel.Controls.Add(New System.Windows.Forms.CheckBox())
Next i
Mi problema es que como creo todos estos controles en tiempo de ejecución no se como controlar el Evento CheckBox.CheckStateChanged para cada checkbox creado. Quiero poder manejar el código cuando suceda el evento CheckBox.CheckStateChanged para cada checkbox que creo en tiempo de ejecución.
Y no se como hacerlo.
¿No se si me he explicado mejor ahora?

Espero que me podáis ayudar como soléis hacerlo.

Muchas gracias.
__________________
www.hellfreak.es
  #7 (permalink)  
Antiguo 02/10/2007, 11:49
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 18 años, 4 meses
Puntos: 2
Re: Control eventos para checkbox generados en tiempo ejecución

Muchas gracias erick_arcini creo que es eso lo que necesitaba, mañana lo probaré y te comento.
Creo que es precisamente eso.
Muchas gracias.
__________________
www.hellfreak.es
  #8 (permalink)  
Antiguo 02/10/2007, 12:06
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 18 años, 4 meses
Puntos: 2
Re: Control eventos para checkbox generados en tiempo ejecución

Ok perfecto lo acabo de probar ahora mismo y me funciona a la perfección.
Muchísimas gracias a todos.
__________________
www.hellfreak.es
  #9 (permalink)  
Antiguo 02/10/2007, 12:25
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 18 años, 4 meses
Puntos: 2
Re: Control eventos para checkbox generados en tiempo ejecución

Volviendo al tema. Ahora tengo otro problema. Dentro de cada If...
Código:
	Private Sub tuCheckX_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
		If CType(sender,CheckBox).Name = "200" Then
			checkeando(AquiMiCheck, me.labelContador, me.button4, me.treeView1)
		ElseIf CType(sender,CheckBox).Name = "201" Then
			msgbox("ok202")
		ElseIf CType(sender,CheckBox).Name = "202" Then
			msgbox("ok203")
		End If
	End Sub
Quiero que se realice un sub creado por mi, el problema es que el primer parametro que le paso a dicho sub tiene que ser el CheckBox pero no se como hacer referencia a él. Si me podéis ayudar de nuevo. No se como identificar el checkbox.

Muchas gracias.
__________________
www.hellfreak.es
  #10 (permalink)  
Antiguo 02/10/2007, 13:21
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 19 años, 8 meses
Puntos: 50
Re: Control eventos para checkbox generados en tiempo ejecución

Con ByRef podrás solucionarlo
Código:
	Private Sub tuCheckX_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
		If CType(sender,CheckBox).Name = "200" Then
			checkeando(AquiMiCheck, me.labelContador, me.button4, me.treeView1)
		ElseIf CType(sender,CheckBox).Name = "201" Then
			msgbox("ok202")
		ElseIf CType(sender,CheckBox).Name = "202" Then
			msgbox("ok203")
		End If
	End Sub
Código:
FUNCION
    Private Sub checkeando(ByRef check As CheckBox, etc,etc,etc)
        ...
    End Sub
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #11 (permalink)  
Antiguo 03/10/2007, 00:38
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 18 años, 4 meses
Puntos: 2
Re: Control eventos para checkbox generados en tiempo ejecución

Buenas ok, pero sigo sin saber como hacer referencia a mi control (ahora pasado por referencia ByRef dentro del sub creado por mi.

Si me lo puedes aclarar.

Muchas gracias anticipadas.
__________________
www.hellfreak.es
  #12 (permalink)  
Antiguo 03/10/2007, 00:52
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 18 años, 4 meses
Puntos: 2
Re: Control eventos para checkbox generados en tiempo ejecución

Solucionado gracias:
Código:
checkeando(sender, me.labelContador, me.button4, me.treeView1)
__________________
www.hellfreak.es
  #13 (permalink)  
Antiguo 29/10/2007, 08:51
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 9 meses
Puntos: 7
Re: Control eventos para checkbox generados en tiempo ejecución

Y por que no usas un CheckBoxList ¿?
__________________
Charlie.
  #14 (permalink)  
Antiguo 30/10/2007, 02:38
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 18 años, 4 meses
Puntos: 2
Re: Control eventos para checkbox generados en tiempo ejecución

Buenas chcma, sería también una opción. De todas formas lo hice con CheckBox

¿Alguna ventaja a destacar al usar CheckBoxList? Lo digo para tenerlo en cuenta en un futuro.

Saludos.
__________________
www.hellfreak.es
  #15 (permalink)  
Antiguo 30/10/2007, 03:32
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 9 meses
Puntos: 7
Re: Control eventos para checkbox generados en tiempo ejecución

Pues que no hace falta que generes dinamicamente cada checkbox, se generarian dentro de un control tipo Lista, con tu scrollbar y demás. Bastante cuco.
__________________
Charlie.
  #16 (permalink)  
Antiguo 30/10/2007, 04:05
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 18 años, 4 meses
Puntos: 2
Re: Control eventos para checkbox generados en tiempo ejecución

OK pues lo tendré en cuenta para próximas aplicaciones. Lo que al final hice es crear checkBox (los necesarios) en tiempo de ejecución dentro de un panel, que tampoco queda nada mal, pero seguro que me hubiera ahorrado bastante código y dolores de cabeza.

Muchas gracias.
__________________
www.hellfreak.es
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 18:39.