Formularios Dinamicos

10/08/2004 - 22:11 por Pol | Informe spam
hola.

quisiera saber si se puede crear un formulario
dinamicamente en .net, pero pasandole el nombre en una
variable, me explico:

cuando uno crea un formulario MDI utiliza la instruccion:

Dim FormularioHijo As New forma

donde forma es un formulario de la aplicacion.

pero lo que yo necesito es:

Dim nombre="nombre formulario"

y luego crear el formulario como sigue:

Dim FormularioHijo As New nombre.

ejm:

Dim Nombre= "Forma"
Dim FormularioHijo As New nombre
 

Leer las respuestas

#1 Tristan
10/08/2004 - 23:03 | Informe spam
Bueno, hay muchas, muchas formas de hacerlo:

Si el formulario se encuentra en el ensamblado actual, una de ellas sería
asi:

Dim nombre As String = "nombre completo clase"
Dim ensamblado As [Assembly] = [Assembly].GetExecutingAssembly()
Dim f As Form = ensamblado.CreateInstance(nombre) 'Mejor DirectCast...

Donde nombre completo es EspacioDeNombre.Formulario

Otra solución es:

Dim tipo As Type = Type.GetType(nombre)
Dim f As Form = Activator.CreateInstance(tipo)


Por otro lado, si necesitas acceder a miembros específicos del Form, hay
varias formas:

La más simple Late Binding

En lugar de Form utiliza Object:

Dim f As Object = Activator.CreateInstance(tipo)
f.MiembroEspecífico


Pero sin duda lo idea es que utilices polimorfismo. Crea una clase base o
interface de la que hereden todos tus Form, y que contenga los miembros que
necesitas llamar. Utiliza ese tipo en lugar de Object o Form.

Dim f as FormBase = Activator.CreateInstance(tipo)
f.MiembroEspecífico()


Juan Carlos Badiola
MVP - C#

Preguntas similares