Obtener tipos en tiempo de ejecucion

10/11/2004 - 18:08 por Joan Ibáñez | Informe spam
Buenas tardes! Estoy creando un formulario en vb.net en tiempo de ejecucion
en base a los datos obtenidos de la base de datos, pero no consigo cargar
los controles, es decir, crear un control de un tipo que obtengo de la base
de datos:

dim sTipo as string = drFila("TipoControl")
dim tipo as type = type.gettype("System.Windows.Forms." & sTipo)
dim ctl as control

ctl = directcast(activator.createinstance(tipo),control)

type.gettype(...) me retorna nothing. ¿Como puedo obtener por ejemplo el
tipo Label o TextBox?

Un saludo
 

Leer las respuestas

#1 Tristan
11/11/2004 - 22:04 | Informe spam
Bueno, tienes un pequeño problema, debido a que GetType solo busca la clase
en los ensamblados de tu aplicación, no en System.Windows.Forms.dll. Puedes
especificar el ensamblado como parte del nombre, pero es bastante complejo.
Requiere el nombre completamente cualificado que es muy, muy largo.

Yo te recomiendo que partas de una clase conocida de winforms para obtener
su ensamblado, y llames a CreateInstance:

Dim winforms As [Assembly] = GetType(Form).Assembly
Dim nombre As String = "Button"
Dim control As Control DirectCast(winforms.CreateInstance("System.Windows.Forms." & nombre),
Control)
...
Me.Controls.Add(control)

Juan Carlos Badiola
MVP - C#

Preguntas similares