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

¿Cómo abrir MdiChildren con nombre de ventana como "variable"?

Estas en el tema de ¿Cómo abrir MdiChildren con nombre de ventana como "variable"? en el foro de .NET en Foros del Web. Buenas a Todos.. aqui nuevamente recurriendo a vuestra ayuda. Pues la cuestión es la siguiente. Para poder abrir una ventana desde un MdiParent como Child, ...
  #1 (permalink)  
Antiguo 20/07/2010, 19:37
Avatar de zick  
Fecha de Ingreso: mayo-2007
Ubicación: Los Angeles - Chile
Mensajes: 168
Antigüedad: 17 años
Puntos: 2
Pregunta ¿Cómo abrir MdiChildren con nombre de ventana como "variable"?

Buenas a Todos.. aqui nuevamente recurriendo a vuestra ayuda.

Pues la cuestión es la siguiente. Para poder abrir una ventana desde un MdiParent como Child, lo utilizo de la siguiente forma:
Código:
 
Dim Lista As New ListaDeClases
Lista.MdiParent = Me
Lista.Show()
Se supone que "ListaDeClases" es el nombre del formulario que abriré como "hijo" en le MdiParent. Ahora bien. ¿Y que tal si con un mismo formulario, dependiendo de una opcion, quisiera abrir otro formulario? ¿Se puede hacer?

En sintesis, lo que quiero lograr, es que un usuario escoja el formulario que quiera abrir desde un combobox y abrirlo dentro de un MdiParent como un MdiChild.

Agradezco la ayuda que me puedan brindar, como siempre. Saludos...
__________________
SZC - Aplicaciones y Servicios.
http://www.szc.cl
Los Angeles - Chile
  #2 (permalink)  
Antiguo 21/07/2010, 05:45
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 5 meses
Puntos: 22
Respuesta: ¿Cómo abrir MdiChildren con nombre de ventana como "variable"?

Se me ocurre que puedes utilizar la clase Form para hacer esto ya que seria la clase base, simplemente deberias de tener una lista con los diferentes formularios que quieres abrir y en base a la selección del usuario le apliques el método, otra cosa que se me ocurre que podes hacer es utilizar Reflection que podes utilizarlo para algo mas genérico.

Saludos
  #3 (permalink)  
Antiguo 21/07/2010, 09:12
Avatar de zick  
Fecha de Ingreso: mayo-2007
Ubicación: Los Angeles - Chile
Mensajes: 168
Antigüedad: 17 años
Puntos: 2
Respuesta: ¿Cómo abrir MdiChildren con nombre de ventana como "variable"?

Muchas gracias gedarufi, me haz mostrado el camino a lo que andaba buscando.

La verdad es que utilize Reflection, y quedó bastante bueno. Anexo el código de como lo hice para alguien que lo pueda necesitar.

Código:
Imports System.Windows
Imports System.Windows.Forms

Public class form1

Private ass As System.Reflection.Assembly

Private Sub from1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ass = System.Reflection.Assembly.GetExecutingAssembly()
End Sub

Private Sub BtnContinar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnContinar.Click
        Dim s As String = Me.LbDestino.Text 'el nombre del formulario de forma "SISTEMA.formulario"
        ' creamos un tipo a partir del nombre
        Dim t As Type = ass.GetType(s)
        ' instanciamos un nuevo objeto en la memoria
        Dim o As Object
        ' por si hemos seleccionado algo que no es una clase
        Try
            o = Activator.CreateInstance(t)
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error al crear la instancia")
            Exit Sub
        End Try
        If Not (TypeOf o Is Form) Then
            MessageBox.Show(s & ", no es un formulario", "Problema al crear formulario")
            Exit Sub
        End If

        Dim frm As Form = DirectCast(o, Form)
        frm.MdiParent = formularioprincipal
        frm.Show()
    End Sub
End class
Saludos a todos los visitantes y gracias nuevamente
__________________
SZC - Aplicaciones y Servicios.
http://www.szc.cl
Los Angeles - Chile

Etiquetas: nombre, ventanas
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 18:01.