Objeto MDIForm para usuarios de Visual Basic 6.0

Actualización: noviembre 2007

En Visual Basic 6.0 un objeto MDIForm era un tipo especial de formulario que actuaba como contenedor para una aplicación MDI (Multiple Document Interface). En Visual Basic 2008, cualquier formulario con la propiedad IsMdiContainer establecida en true puede actuar como contenedor MDI.

Diferencias conceptuales

Formularios secundarios y múltiples formularios MDI

En Visual Basic 6.0 el establecimiento de la propiedad MDIChild en un formulario secundario lo identifica como secundario del formulario MDI; una aplicación MDI sólo puede tener un formulario MDI.

En Visual Basic 2008, la propiedad MdiParent reemplaza a la propiedad MDIChild e identifica el formulario MDI que contendrá el formulario secundario; las aplicaciones MDI pueden tener varios contenedores MDI.

Propiedades BackColor y Picture

En Visual Basic 6.0, se puede cambiar el color de fondo de MDIForm estableciendo la propiedad BackColor y se puede mostrar una imagen de fondo configurando la propiedad Picture.

En Visual Basic 2008, no es posible cambiar el color de fondo ni mostrar una imagen en un formulario MDI. Aunque puede establecer las propiedades BackColor y BackgroundImage en el formulario, al establecer la propiedad IsMdiContainer en true, se invalida esta configuración.

Propiedad AutoShowChildren

En Visual Basic 6.0 se utiliza la propiedad AutoShowChildren de los formularios MDI para mostrar automáticamente los formularios MDI secundarios en el momento de cargarlos. Los formularios estándar no presentan este comportamiento; la llamada al método Load carga pero no muestra el formulario.

En Visual Basic 2008, debe llamar explícitamente al método Show para mostrar un formulario MDI secundario.

Controles y gráficos en formularios MDI

En Visual Basic 6.0, no es posible agregar la mayor parte de los controles a un MDIForm. Puede agregar sólo controles acoplados como los controles Menu, StatusBar o ToolBar. Además, los métodos de gráficos como Circle o Line no se pueden utilizar en MDIForm.

En Visual Basic 2008, puede agregar cualquier control a un formulario MDI; no obstante, es posible que no tenga el comportamiento esperado. Cualquiera control de un formulario con la propiedad IsMdiContainer establecida en true "flotará" encima de cualquier formulario MDI secundario. Aunque puede realizar llamadas a métodos de gráficos en el evento Paint, los gráficos no aparecerán en tiempo de ejecución.

Cambios de código para formularios MDI

En los ejemplos siguientes se muestran las diferencias entre las técnicas de codificación de Visual Basic 6.0 y Visual Basic 2008.

Cambios de código para mostrar formularios MDI secundarios

El código siguiente muestra cómo se muestran cinco instancias de un formulario MDI secundario.

' Visual Basic 6.0
Dim F(1 To 4) As New Form1
Private Sub MDIForm_Load()
   Dim i As Integer
   Load Form1
   For i = 1 To 4
      F(i).Caption = "Form" & i + 1
      F(i).Show
   Next I
End Sub
' Visual Basic
Private Sub MDIForm1_Load(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles MyBase.Load
  Dim i As Integer = 0
  For i = 0 To 4
      Dim F As New FormChild
      F.Text = "Form " & CStr(i + 1)
      F.Show()
  Next
End Sub

Cambios de código para organizar las ventanas MDI secundarias

El código siguiente muestra cómo se escribe el código para cambiar la organización de ventanas en una aplicación MDI. Se supone que ha creado los elementos de menú para cada opción.

' Visual Basic 6.0
Private Sub menuCascade_Click()
   Me.Arrange vbCascade
End Sub
Private Sub menuTileHorizontally_Click()
   Me.Arrange vbHorizontal
End Sub
Private Sub menuTileVertically_Click()
   Me.Arrange vbVertical
End Sub
' Visual Basic
Private Sub CascadeToolStripMenuItem_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles CascadeToolStripMenuItem.Click

  Me.LayoutMdi(MdiLayout.Cascade)
End Sub
' Visual Basic
Private Sub TileVerticleToolStripMenuItem_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles TileVerticalToolStripMenuItem.Click

  Me.LayoutMdi(MdiLayout.TileVertical)
End Sub
' Visual Basic
Private Sub TileHorizontalToolStripMenuItem_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles TileHorizontalToolStripMenuItem.Click

  Me.LayoutMdi(MdiLayout.TileHorizontal)
End Sub

Equivalencias de propiedad y método de formulario MDI

En la siguiente tabla se enumeran propiedades y métodos de Visual Basic 6.0 junto con sus equivalentes en Visual Basic 2008. Sólo se muestran propiedades y métodos que son únicos del objeto MDIForm; para otras propiedades, métodos y eventos, vea Objeto Form para usuarios de Visual Basic 6.0.

Propiedades y métodos de MDIForm

Visual Basic 6.0

Equivalente en Visual Basic 2008

Propiedad ActiveForm

ActiveMdiChild

Método Arrange

LayoutMdi

Propiedad AutoShowChildren

Nueva implementación. Para obtener más información, vea El comportamiento de Show del formulario MDI ha cambiado.

Propiedad BackColor

Nueva implementación. El fondo para un formulario MDI será siempre el predeterminado (Control).

Propiedad Picture

Nueva implementación. Los formularios MDI de Visual Basic 2008 no pueden mostrar imágenes directamente.

Notas de actualización

Cuando se actualiza una aplicación MDI desde Visual Basic 6.0 a Visual Basic 2008, cualquier objeto MDIForm se actualiza a formularios normales y la propiedad IsMdiContainer se establece en true.

En Visual Basic 2008, la propiedad AutoShowChildren ya no existe. Para emular el comportamiento de Visual Basic 6.0, se agrega una línea de código durante la actualización para que se muestre cada formulario secundario si la propiedad AutoShowChildren está establecida en true en la aplicación original.

Vea también

Conceptos

MDI para usuarios de Visual Basic 6.0

Objeto Form para usuarios de Visual Basic 6.0

Tareas de formularios para usuarios de Visual Basic 6.0

Otros recursos

Aplicaciones de interfaz de múltiples documentos (MDI)