Abrir formularios dinámicamente

30/03/2005 - 09:29 por Lucía | Informe spam
Hola,

Necesito crear una función que me permita abrir formularios de forma
dinámica, es decir pasándole un parámetro tipo string que contiene el nombre
del formulario (cada vez uno) Debería quedar de esta forma (pero en VB.NET)

Sub ver Formulario (f as string)
Dim Form1 as form
Form1 = Forms.Add(f)
Form1.Show( )
End Sub

Este código me funciona en VB6 ¿Qué debo cambiar para que me funcione en
VB.NET?

Gracias

Preguntas similare

Leer las respuestas

#6 Lucía
01/04/2005 - 12:44 | Informe spam
Muchas gracias, ha funcionado perfectamente añadiendo el NameSpace.

Pero ahora me ha surgido otro problema a partir de abrir el formulario
dinámicamente.

Desde el formulario dinámico se abre otro formulario (siempre el mismo) y
desde este nuevo formulario se seleccionan unos datos que se deben enviar a
un textbox del formulario dinámico, además el formulario dinámico es el
Owner del nuevo formulario.

Antes utilizaba CType(Me.Owner, form1).TextBox1.Text y esto funcionaba
bien, pero ahora al intentar poner una variable String en lugar de form1, dá
error y por ahora aún no sé como enviar datos a un TextBox del formulario
dinámico desde el nuevo formulario.

Un saludo,





"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:%23e03$
Para ambos casos, necesitas usar el nombre de la clase junto con el
namespace en el que esta definido (por ejemplo MiNamespace.MiClase) y
escrito exactamente igual a como esta definido ya que se diferencian
mayusculas de minusculas. Si el formulario no esta en el ensamblado en que
creas el formulario deberas indicar tambien el ensamblado en
CreateInstance:

Public Sub VerFormulario( _
ByVal formulario As String, _
Optional ByVal ensamblado As String = Nothing)

Dim f As Form

f = DirectCast(Activator.CreateInstance(ensamblado,
formulario).Unwrap, Form)
f.Show()

End Sub

VerFormulario("MiNamespace.MiForm","MiEnsambladoConForms")

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
https://mvp.support.microsoft.com/p...4EF5A4191C


Respuesta Responder a este mensaje
#7 Eduardo A. Morcillo [MS MVP VB]
01/04/2005 - 15:59 | Informe spam
Antes utilizaba CType(Me.Owner, form1).TextBox1.Text y esto
funcionaba bien, pero ahora al intentar poner una variable String en
lugar de form1, dá error y por ahora aún no sé como enviar datos a un
TextBox del formulario dinámico desde el nuevo formulario.



La conversion de tipo no la puedes hacer dinamica ya que el tipo final se
necesita al momento de compilar. Tienes que buscar alguna otra forma para
hacerlo. Podrias usar Reflection para obtener la instancia del TextBox,
recorrer la coleccion Controls del formulario en busca del control, crear un
formulario base que incluya el control y usarlo como clase base de los
formularios (harias entonces el CType con esa clase) o crear una interface
con una funcion o propiedad que devuelva el control e implementarla en los
formulario (harias entonces el CType con la interface).

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
https://mvp.support.microsoft.com/p...4EF5A4191C
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida