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

Obtener controles de todos los formularios de un proyecto [C#]

Estas en el tema de Obtener controles de todos los formularios de un proyecto [C#] en el foro de .NET en Foros del Web. Hola buenas. Tengo un problema con un proyecto que estoy programando. Necesito, en tiempo de ejecución, obtener una lista con todos los controles de los ...
  #1 (permalink)  
Antiguo 22/01/2009, 03:53
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Obtener controles de todos los formularios de un proyecto [C#]

Hola buenas.

Tengo un problema con un proyecto que estoy programando. Necesito, en tiempo de ejecución, obtener una lista con todos los controles de los formularios de la aplicación, cosa que se preveía sencilla, pero que se me complica y no doy con la solución.

La idea es que desde un formulario, donde se mostrará la lista obtenida, se realice la búsqueda. Sé que por Reflection se pueden obtener los Type del proyecto, con System.Reflection.Assembly.GetExecutingAssembly(). GetTypes(), pero luego no me deja hacer un casteo de ellos a System.Windows.Forms.Form, para, con un foreach, recorrer sus controles y extraer su nombre.

Llevo mucho tiempo perdido con el tema, y no encuentro solución. ¿Alguien sabría cómo podría hacerlo?

Gracias de antemano.
  #2 (permalink)  
Antiguo 27/01/2009, 16:11
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 5 meses
Puntos: 22
Respuesta: Obtener controles de todos los formularios de un proyecto [C#]

Despues de que tengas los tipos debes de crear una instancia de ellos y tratar de hacer el cast al tipo Form de la siguiente manera

Código:
Form frm = obj as Form;

if(frm != null)//Quiere decir que el objeto si es un tipo compatible con Form
{
   foreach(...)
   {
   }
}
cualquier duda que mandas un MP.
  #3 (permalink)  
Antiguo 03/02/2009, 21:13
Avatar de Elmejor915  
Fecha de Ingreso: febrero-2009
Ubicación: Tarapoto
Mensajes: 14
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Obtener controles de todos los formularios de un proyecto [C#]

Saludos, este es mi código con el cual recorro los controles:

En el ejemplo almacenaré los datos en un listview:

Private Sub FrmPrincipal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
RecorreControles(Me)
End Sub


Private Sub RecorreControles(ByVal Ctl As Control)
Dim c As Control
For Each c In Ctl.Controls
If TypeOf c Is System.Windows.Forms.TextBox Then
Me.Listview1.Items.Add(c.name, c.name)
If TypeOf c Is System.Windows.Forms.Label Then
Me.Listview1.Items.Add(c.name, c.name)
ElseIf TypeOf c Is System.Windows.Forms.GroupBox Then
Me.Listview1.Items.Add(c.name, c.name)
RecorreControles(c)
' Si es un contenedor, que recorra todos sus controles
End If
Next c
End Sub
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




La zona horaria es GMT -6. Ahora son las 01:06.