CheckBox en un array de controles

27/05/2005 - 23:55 por Javier | Informe spam
Hola buenas.

Estaba utilizando el Array de Controles que aparece en la pagina de
http://www.elguille.info/NET/dotnet...troles.htm y todo correcto (no
es tan facil como en Visual Basic 6.0 pero bueno, que se va a hacer). El
problema es que me he atascado en un punto.

Cuando quiero utilizar la propiedad .Checked de un array de controles que he
hecho con unos CheckBox no puedo utilizarla. Me salen otras propiedades como
Text, Visible, Enable, pero no Checked.

¿Me podrian decir como lo puedo solucionar o puedo usar alguna otra
alternativa?

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Tristan
28/05/2005 - 00:15 | Informe spam
No conozco el ejemplo de El Guille. Por lo que dices tiene pinta de que el
array esté definido con tipo Control, y no tipo CheckBox. Por eso te
aparecen los miembros de la clase base Control, pero no los de la específica
CheckBox.

En realidad crear arrays de controles en vb.net es extremadamente sencillo.
Espero que este ejemplo te sirva para ver las cosas más fáciles:

Dim opciones(7) As CheckBox
Dim opcion As CheckBox
Dim i As Integer
For i = 0 To 7
opcion = New CheckBox
opcion.Text = "Opción " & i.ToString()
opcion.Location = New Point(0, i * opcion.Height)
opcion.Checked = i < 4
opciones(i) = opcion
Next
Me.Controls.AddRange(opciones)

Esto añade 8 CheckBox a tu formulario, y guarda sus referencias en un Array.
Podrás acceder después a cada una mediante opciones(x).LoQueSea

Si además necesitas tratar eventos, basta con que lo pidas. Es realmente muy
sencillo, una sola línea, pero prefiero de momento no añadir esa parte por
si no la necesitas.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 Javier
28/05/2005 - 11:36 | Informe spam
Hola Tristan.

Lo de los eventos ya lo he conseguido.

No me parece tan facil como en VB6 pero bueno, que se va a hacer...

Muchas gracias.

"Tristan" escribió en el mensaje
news:
No conozco el ejemplo de El Guille. Por lo que dices tiene pinta de que el
array esté definido con tipo Control, y no tipo CheckBox. Por eso te
aparecen los miembros de la clase base Control, pero no los de la
específica CheckBox.

En realidad crear arrays de controles en vb.net es extremadamente
sencillo. Espero que este ejemplo te sirva para ver las cosas más fáciles:

Dim opciones(7) As CheckBox
Dim opcion As CheckBox
Dim i As Integer
For i = 0 To 7
opcion = New CheckBox
opcion.Text = "Opción " & i.ToString()
opcion.Location = New Point(0, i * opcion.Height)
opcion.Checked = i < 4
opciones(i) = opcion
Next
Me.Controls.AddRange(opciones)

Esto añade 8 CheckBox a tu formulario, y guarda sus referencias en un
Array. Podrás acceder después a cada una mediante opciones(x).LoQueSea

Si además necesitas tratar eventos, basta con que lo pidas. Es realmente
muy sencillo, una sola línea, pero prefiero de momento no añadir esa parte
por si no la necesitas.

Juan Carlos Badiola
MVP - C#


Respuesta Responder a este mensaje
#3 Tristan
28/05/2005 - 13:46 | Informe spam
No se si será tan fácil, lo que se es que yo no encuentro ninguna dificultad
en usarlos.

No olvides que puedes copiar-pegar el código que el diseñador genera para un
control, que se encuentra en el método InitializeComponents, y utilizarlo
como base para tu array de controles. Así no tendráas que definir
manualmente todas las propiedades de tu control.

De lo que estoy seguro es que sean o no más fáciles, lo que se tiene ahora
es mucho más potente. Yo vengo de Delphi. Ni en Delphi ni en Java ni en
nigún otro entorno que conozca existe algo parecido a los arrays de
controles. Al fin y al cabo ¿que sentido tiene limitarse a un array de
controles, cuando un array genérico puede hacer lo mismo? Los arrays de
controles de VB están limitados a un solo tipo de control, mientras que los
arrays genéricos admiten cualquier clase de objeto. Además los arrays de
controles, están limitado por el tipo de colección preestablecida de VB. No
se pueden utilizar ni colas, ni pilas, ni ninguna otra estructura de datos.
El gran problema de VB es no tener algo similar al AddHandler de vb.net.

La única pega de vb.net respecto a este tema, es que el manejo de eventos en
los controles se ha basado en WithEvents. Esto dificulta comprender como
trabajar con arrays de controles. Es una de las razones por las que prefiero
C#.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#4 Javier
28/05/2005 - 15:19 | Informe spam
Hola de nuevo.

La verdad es que tienes toda la razón, ahora son mucho más potentes.

Muchas gracias!!


"Tristan" escribió en el mensaje
news:%
No se si será tan fácil, lo que se es que yo no encuentro ninguna
dificultad en usarlos.

No olvides que puedes copiar-pegar el código que el diseñador genera para
un control, que se encuentra en el método InitializeComponents, y
utilizarlo como base para tu array de controles. Así no tendráas que
definir manualmente todas las propiedades de tu control.

De lo que estoy seguro es que sean o no más fáciles, lo que se tiene ahora
es mucho más potente. Yo vengo de Delphi. Ni en Delphi ni en Java ni en
nigún otro entorno que conozca existe algo parecido a los arrays de
controles. Al fin y al cabo ¿que sentido tiene limitarse a un array de
controles, cuando un array genérico puede hacer lo mismo? Los arrays de
controles de VB están limitados a un solo tipo de control, mientras que
los arrays genéricos admiten cualquier clase de objeto. Además los arrays
de controles, están limitado por el tipo de colección preestablecida de
VB. No se pueden utilizar ni colas, ni pilas, ni ninguna otra estructura
de datos. El gran problema de VB es no tener algo similar al AddHandler de
vb.net.

La única pega de vb.net respecto a este tema, es que el manejo de eventos
en los controles se ha basado en WithEvents. Esto dificulta comprender
como trabajar con arrays de controles. Es una de las razones por las que
prefiero C#.

Juan Carlos Badiola
MVP - C#


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida