miércoles, 2 de diciembre de 2009

[WinForms] MDI – Formularios modales

 

En un ambiente MDI es sabido que los formulario hijos no podrán ser desplegados mediante el método ShowDialog() para que estos se comportan de forma modal, pero a veces es necesario que este formulario este en primer plano hasta que este completo para después si poder cerrarlo y capturar la información ingresada.

La solución a este problema se logra mediante el uso de una función del  API de Windows

<System.Runtime.InteropServices.DllImport("user32.DLL")> _
Public Shared Function SetParent(ByVal hWndChild As Integer, ByVal hWndNewParent As Integer) As Integer
End Function


Private Sub btnshowmodal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnshowmodal.Click

    Dim frm As New Form3
    frm.Show()

    SetParent(CInt(frm.Handle), CInt(Me.MdiParent.Handle))

End Sub

Como se vera en ele ejemplo se sigue utilizando el método Show() el cual se usa en un ambiente MDI, solo que ahora se realiza un paso adicional al utilizar la funcionalidad del Sistema Operativo para establecer las relaciones entre ventanas.

[VB.NET] 
 

2 comentarios:

  1. Hola, por favor su ayuda. ¿Como sería en C#?.

    ResponderEliminar
    Respuestas
    1. hola
      Se podria decir que el codigo es muy similar
      SetParent
      todo es cuestion de definir la api de windows
      saludos

      Eliminar