Reflexion

21/09/2005 - 23:16 por anonymous | Informe spam
Como puedo saber que controles existen en un WebForm con
reflexion. Existe algun requerimiento de seguridad?

Preguntas similare

Leer las respuestas

#1 Martín Trejo Chávez
22/09/2005 - 07:48 | Informe spam
No creo que sea estrictamente necesario usar reflexión, puedes recorrer
la colección Controls de la WebForm para ver que controles existen.

Saludos,

Martín Trejo Chávez
http://chilli-coder.blogspot.com

anonymous escribió:
Como puedo saber que controles existen en un WebForm con
reflexion. Existe algun requerimiento de seguridad?
Respuesta Responder a este mensaje
#2 anonymous
23/09/2005 - 03:38 | Informe spam
No creo que se pueda hacer lo que quiero de esa manera,
la idea es la siguiente:

Quiero desde un WebFormA ver que controles tiene un
WebFormB, WebFormC, todos los que estan en el esamblado.
Digamos que un el WebFormA se listan todas las formas del
ensamblado en un DropDownList y cuando escojo uno se
listan todos los controles de esa forma en un datagrid.

creo que necesito reflexion para hacerlo..

gracias de todos modos!


No creo que sea estrictamente necesario usar reflexión,


puedes recorrer
la colección Controls de la WebForm para ver que


controles existen.

Saludos,

Martín Trejo Chávez
http://chilli-coder.blogspot.com

anonymous escribió:
Como puedo saber que controles existen en un WebForm




con
reflexion. Existe algun requerimiento de seguridad?


.

Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
23/09/2005 - 06:33 | Informe spam
Depende de como este hecho es formulario puede ser que no obtengas todos los
controles. El problema es que una clase tiene metodos, campos, propiedades y
eventos pero no "controles". Los controles agregados en el diseñador tienen
asociado un campo en la clase pero esto no asegura que el control sea
visible o que no se agreguen controles durante la interaccion con el
formulario. Ademas pese a tener los campos definidos por el diseñador, si el
formulario hereda de otro y en el padre estos campos estan declarados como
private no los veras si solo enumeras aquellos campos del formulario
heredado. Para enumeracion los campos de la clase usando reflection haces
asi:

// Obtengo el Type correspondiente al formulario
Type t = typeof(Form1);

// Obtengo todos los campos de instancia que no son publicos
FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic |
BindingFlags.Instance);

// Recorro el array de campos
foreach(FieldInfo field in fields) {

// El tipo del campo hereda de System.Windows.Forms.Control?
if (field.FieldType.IsSubclassOf(typeof(System.Windows.Forms.Control)))

// Es un control
Console.WriteLine ("Nombre: {0} - Tipo: {1}", field.Name,
field.FieldType.FullName);

}

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#4 anonymous
23/09/2005 - 23:08 | Informe spam
perfect!
gracias


Depende de como este hecho es formulario puede ser que


no obtengas todos los
controles. El problema es que una clase tiene metodos,


campos, propiedades y
eventos pero no "controles". Los controles agregados en


el diseñador tienen
asociado un campo en la clase pero esto no asegura que


el control sea
visible o que no se agreguen controles durante la


interaccion con el
formulario. Ademas pese a tener los campos definidos por


el diseñador, si el
formulario hereda de otro y en el padre estos campos


estan declarados como
private no los veras si solo enumeras aquellos campos


del formulario
heredado. Para enumeracion los campos de la clase usando


reflection haces
asi:

// Obtengo el Type correspondiente al formulario
Type t = typeof(Form1);

// Obtengo todos los campos de instancia que no son


publicos
FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic


|
BindingFlags.Instance);

// Recorro el array de campos
foreach(FieldInfo field in fields) {

// El tipo del campo hereda de


System.Windows.Forms.Control?
if (field.FieldType.IsSubclassOf(typeof


(System.Windows.Forms.Control)))

// Es un control
Console.WriteLine ("Nombre: {0} - Tipo: {1}",


field.Name,
field.FieldType.FullName);

}

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...73D2-BD48-


4197-A380-104EF5A4191C


.

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