Recorrer los objetos de un form

05/01/2008 - 05:39 por Josias | Informe spam
Como puedo recorrer todos los objetos de un tipo especifico que estan
contenidos en un form windows?

Hice una prueba con la coleccion Controls pero no me incluye algunos objetos
como un DataSet, por ejemplo.
Hay algo mas general para recorrer los controles?

Josias

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
05/01/2008 - 09:23 | Informe spam
"Josias" <josias> wrote in message
news:%
Como puedo recorrer todos los objetos de un tipo especifico que estan
contenidos en un form windows?

Hice una prueba con la coleccion Controls pero no me incluye algunos
objetos como un DataSet, por ejemplo.
Hay algo mas general para recorrer los controles?



Lo más general para recorrer los controles es una rutina recursiva que
recorra la colección Controls, y por cada uno de los controles de esa
colección a su vez vuelva a recorrer sus Controls, y asi sucesivamente. Lo
que no salga de esta manera, o no es un Control, o no pertenece a ese Form.
Por ejemplo, un DataSet no es un control, por eso no se obtiene mediante
este mecanismo.
Respuesta Responder a este mensaje
#2 Josias
05/01/2008 - 18:06 | Informe spam

Por ejemplo, un DataSet no es un control, por eso no se obtiene mediante
este mecanismo.




Y no existirá alguna forma de obtener esos objetos que no sean controles ?

Gracias.

Josias
Respuesta Responder a este mensaje
#3 Alberto Poblacion
06/01/2008 - 11:29 | Informe spam
"Josias" <josias> wrote in message
news:
>
Por ejemplo, un DataSet no es un control, por eso no se obtiene mediante
este mecanismo.




Y no existirá alguna forma de obtener esos objetos que no sean controles ?



Depende de dónde tengas esos objetos. Por ejemplo, si sabes que los has
declarado como variables de clase en el formulario, puedes enumerarlos por
Reflexión usando GetFields.

Un ejemplo: Supongamos que has declarado un dataset en la clase del
formulario:

class MiFormulario: Form
{
private DataSet ds;
...
private void Form_Load(...)
{
ds = new DataSet();
...
}
}

Entonces, para enumerar todas las variables de clase (entre las que se
encontrará "ds"), puedes hacer esto:

using System.Reflection;
...
Type t = typeof(MiFormulario);
FieldInfo[] fia =
t.GetFields(BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Instance);
foreach (FieldInfo fi in fia)
{
//fi.FieldType te da el tipo (por ejemplo, DataSet)
//fi.Name te da el nombre ("ds")
//etc.
//Para evaluarlo: valor=fi.GetValue(instanciaDelForm);
}
Respuesta Responder a este mensaje
#4 Josias
06/01/2008 - 12:29 | Informe spam
Muchas gracias, Alberto.


"Alberto Poblacion"
escribió en el mensaje news:%23fUG$
"Josias" <josias> wrote in message
news:
>
Por ejemplo, un DataSet no es un control, por eso no se obtiene mediante
este mecanismo.




Y no existirá alguna forma de obtener esos objetos que no sean controles
?



Depende de dónde tengas esos objetos. Por ejemplo, si sabes que los has
declarado como variables de clase en el formulario, puedes enumerarlos por
Reflexión usando GetFields.

Un ejemplo: Supongamos que has declarado un dataset en la clase del
formulario:

class MiFormulario: Form
{
private DataSet ds;
...
private void Form_Load(...)
{
ds = new DataSet();
...
}
}

Entonces, para enumerar todas las variables de clase (entre las que se
encontrará "ds"), puedes hacer esto:

using System.Reflection;
...
Type t = typeof(MiFormulario);
FieldInfo[] fia =
t.GetFields(BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Instance);
foreach (FieldInfo fi in fia)
{
//fi.FieldType te da el tipo (por ejemplo, DataSet)
//fi.Name te da el nombre ("ds")
//etc.
//Para evaluarlo: valor=fi.GetValue(instanciaDelForm);
}


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