Detectar los comboboxes

30/12/2008 - 20:05 por Gilbert | Informe spam
Hice una clase de comboboxes. Quiero que al ponerlos en un form me los
acumule en una lista porque luego necesito recorrerlos en varios lugares del
form.

Se que podria recorrer la propiedad Controls y preguntar si son de esa clase
pero quisiera mejor tenerlos en una lista donde ellos mismos se vayan
registrando, la pregunta es:

Como puedo hacer para "registrar" cada combobox en la lista? En que lugar
pongo el codigo para que se agreguen automaticamente a la lista de
comboboxes?

Preguntas similare

Leer las respuestas

#1 SoftJaén
31/12/2008 - 12:37 | Informe spam
"Gilbert" preguntó:

Como puedo hacer para "registrar" cada combobox en la lista? En que
lugar pongo el codigo para que se agreguen automaticamente a la lista
de comboboxes?



Puedes utilizar una lista genérica «List<T>» donde podrás añadir los
controles ComboBox para posteriormente recorrer sus elementos.

Por ejemplo, a nivel del formulario declararías la lista genérica:

private List<ComboBox> listaComboBox;

En el evento «Load» del formulario, mientras recorres la colección de
controles existentes, añadirías los controles ComboBox a la lista genérica:

private void Form1_Load(object sender, EventArgs e)
{
listaComboBox = new List<ComboBox>();

foreach (Control ctrl in this.Controls)
{
if (ctrl is ComboBox)
{
listaComboBox.Add((ComboBox)ctrl);
}
}
}

Y cuando desees recorrer la lista de controles ComboBox, ejecutarías lo
siguiente:

foreach (ComboBox cb in listaComboBox)
{
MessageBox.Show(cb.Name);
}


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.
Respuesta Responder a este mensaje
#2 Gilbert
02/01/2009 - 12:52 | Informe spam
Hola Enrique
Otra pregunta, si se tratase de un tipo que no sea un control como se podria
detectar?

Gracias


"SoftJaén" escribió en el mensaje
news:
"Gilbert" preguntó:

Como puedo hacer para "registrar" cada combobox en la lista? En que
lugar pongo el codigo para que se agreguen automaticamente a la lista
de comboboxes?



Puedes utilizar una lista genérica «List<T>» donde podrás añadir los
controles ComboBox para posteriormente recorrer sus elementos.

Por ejemplo, a nivel del formulario declararías la lista genérica:

private List<ComboBox> listaComboBox;

En el evento «Load» del formulario, mientras recorres la colección de
controles existentes, añadirías los controles ComboBox a la lista
genérica:

private void Form1_Load(object sender, EventArgs e)
{
listaComboBox = new List<ComboBox>();

foreach (Control ctrl in this.Controls)
{
if (ctrl is ComboBox)
{
listaComboBox.Add((ComboBox)ctrl);
}
}
}

Y cuando desees recorrer la lista de controles ComboBox, ejecutarías lo
siguiente:

foreach (ComboBox cb in listaComboBox)
{
MessageBox.Show(cb.Name);
}


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.
Respuesta Responder a este mensaje
#3 SoftJaén
02/01/2009 - 15:03 | Informe spam
"Gilbert" preguntó:

si se tratase de un tipo que no sea un control como se podria detectar?



Comparando el «System.Type» del tipo de dato del que se trate con el
«System.Type» de una variable declarada con el mismo tipo de dato.

Imagina que en tu proyecto tienes definida la siguiente clase:

public class Class1
{

}

Y en el código fuente utilizas una variable objeto del tipo «Class1»:

Class1 c = new Class1();

Verificarías que dicha variable objeto es del tipo «Class1» de la siguiente
manera:

// Obtengo el Type de la clase.
//
Type ty = c.GetType();

// Comparo los objetos System.Type
//
if (ty == typeof(Class1))
{
string msg = string.Format(
"La variable objeto {0} es del tipo {1}.", c, ty);

MessageBox.Show(msg);
}
else
{
MessageBox.Show("No son del mismo tipo.");
}

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.
Respuesta Responder a este mensaje
#4 Gilbert
03/01/2009 - 13:31 | Informe spam
Gracias aunque realmente me referia a recorrerlos parecido a lo que se hace
con "Controls".


"SoftJaén" escribió en el mensaje
news:
"Gilbert" preguntó:

si se tratase de un tipo que no sea un control como se podria detectar?



Comparando el «System.Type» del tipo de dato del que se trate con el
«System.Type» de una variable declarada con el mismo tipo de dato.

Imagina que en tu proyecto tienes definida la siguiente clase:

public class Class1
{

}

Y en el código fuente utilizas una variable objeto del tipo «Class1»:

Class1 c = new Class1();

Verificarías que dicha variable objeto es del tipo «Class1» de la
siguiente manera:

// Obtengo el Type de la clase.
//
Type ty = c.GetType();

// Comparo los objetos System.Type
//
if (ty == typeof(Class1))
{
string msg = string.Format(
"La variable objeto {0} es del tipo {1}.", c, ty);

MessageBox.Show(msg);
}
else
{
MessageBox.Show("No son del mismo tipo.");
}

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.
Respuesta Responder a este mensaje
#5 SoftJaén
03/01/2009 - 13:53 | Informe spam
"Gilbert" escribió:

aunque realmente me referia a recorrerlos parecido a lo que se hace con
"Controls".



¿Recorrer las variables objeto que has declarado en tú código? ¿Recorrer las
clases que has declarado en tu proyecto?

Échale un vistazo al espacio de nombres System.Reflection, para ver si se
puede o no.


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.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida