Es un formulario padre, un formulario contenedor de otros, los otros se abrirán dentro de él (del padre)
Hacer un office con varios documentos
Veamos un ejemplo de cómo crear una aplicación parecida al microsoft office Word en la que podamos crear diferentes archivos de texto, modificarlos y guardarlos.
Para crear nuestra aplicación, cogemos cualquier formulario y ponemos la propiedad isMdiContainer a true, ese será nuestro formulario base.
Si queremos hacer un documento parecido al de Word, creamos otro formulario, añadimos un RichTextBox y para hacer que ocupe toda la ventana, vamos a su propiedad Dock y seleccionamos la del medio (Fill).
Crear un menú
Si tenemos un menú y queremos hacer una pestaña donde se vean cuantos hijos tenemos, pinchamos en el menú, opción MdiWindowsListItem y seleccionamos ventanaToolStripListItem.
Para cambiar las vistas de las ventanas
Podemos seleccionar diferentes vistas de los documentos abiertos desde el menú de arriba, pero también podemos hacerlo desde nuestro código, os dejo un código de ejemplo.
Private Sub MosaicoHorizontalToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MosaicoHorizontalToolStripMenuItem.Click
Me.LayoutMdi(MdiLayout.TileHorizontal)
End Sub
LayoutMdia es la propiedad que contiene los diferentes tipos de clasificación de ventanas.
Menú para cambiar la fuente
Si queremos que nuestros documentos pueden variar el tamaño de letra o el tipo de fuente, vamos a necesitar el control FontDialog al que llamaremos dlgFuente. Veamos otro ejemplo.
Dim resp As DialogResult
Dim fh As Form2
fh = Me.ActiveMdiChild
If fh IsNot Nothing Then
dlgFuente.Font = fh.RichTextBox1.SelectionFont
resp = dlgFuente.ShowDialog()
If resp = Windows.Forms.DialogResult.OK Then
fh.RichTextBox1.SelectionFont = dlgFuente.Font
'fh.RichTextBox1.Text = "HOLITASSS vecinitooo"
fh.RichTextBox1.SelectionColor = dlgFuente.Color
End If
End If
Menú para guardar
Necesitamos SaveFileDialog, lo llamaremos dlgGuardar
'diferentes opciones para guardar
dlgGuardar.Filter = "Formato de Texto Enriquecido | *.rtf| texto| *.txt"
dlgGuardar.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments
If dlgGuardar.ShowDialog() = Windows.Forms.DialogResult.OK Then
Dim n_arch = dlgGuardar.FileName
Dim fh As Form2
fh = Me.ActiveMdiChild
fh.RichTextBox1.SaveFile(n_arch)
End If
End Sub
Menú abrir
necesitamos OpenFileDialog, lo llamaremos dlgAbrir
dlgAbrir.Filter = "Formato de Texto Enriquecido | *.rtf| texto| *.txt"
Dim fh As New Form2
fh.MdiParent = Me
dlgAbrir.ShowDialog()
Dim n_arch = dlgAbrir.FileName
fh.RichTextBox1.LoadFile(n_arch)
fh.Show()
La verdad que estos codigos me fueron de mucha utilidad, te felicito Emilio por este gran trabajo que desempeñas en tu pagina.
Atte. Pedro
Muchas gracias Pedro, se agradece
Como se puede crear un formulario con un menu tipo world 2007 ?
para hacer una aplicación con la interfaz de usuario de office 2007 busca en internet ELEGANT RIBBON, Saludos
muchas, gracias; como puedo hacer cuando yo hago que mi formulario principal se establesca su propiedad ismdicontainer en true, cuando yo inserto una imagen y cuando hago un evento para que salga el formulario hijo aparesca siempre adelante
Cuando llames al formulario hijo haz lo siguiente:
‘ Le decimos al formulario hijo que sera hijo del formulario que lo esta llamando.
frmHijo.MdiParent = Me
‘ Lo mostramos al usuario.
frmHijo.Show
Si en dado caso no queremos que sea hijo del formulario que lo llama, solo cambianos la parte del “Me” por el nombre del formulario padre que lo contendra.
Ejemplo:
frmHijo.MdiParent = frmPadre2
frmHijo.Show()
Algo muy importante es que ahi no te funcionan los formularios que se quieren mostrar como modales, por ejemplo si le pones:
frmHijo.ShowDialog() te daria error si le dices que es hijo de otro.