Professional Documents
Culture Documents
FORMULARIOS
INTRODUCCIÓN
Un formulario en Visual Basic .NET hereda sus propiedades de la Clase
System.Windows.Forms.Form.
Este espacio de nombres contiene todos los tipos del entorno, a través de los cuales
podremos desarrollar aplicaciones compuestas por formularios Windows, junto a los
correspondientes controles que permiten al usuario la interacción con el programa.
La clase Form contiene todos los miembros para la creación y manipulación de formularios
Tras instanciar un objeto de Form, mediante la configuración de las adecuadas propiedades,
podemos crear formularios estándar, de diálogo, de interfaz múltiple o MDI, con diferentes
bordes, etc.
1
FORMULARIOS MODALES Y NO MODALES
Los formularios modales son aquellos que no permiten el acceso a otras ventanas mientras
estén abiertos, en cambio los modales pueden pasar a segundo plano si se quiere activar
otra ventana.
Es aconsejable que las ventanas que muestran mensajes importantes o que solicitan
información imprescindible sean siempre modales, pues así se garantiza que el usuario va a
prestar atención a la información que se muestra.
Para abrir un formulario no modal es necesario crear una variable del tipo del formulario
que deseamos abrir y despues utilizar el método Show de esta variable objeto.
Dim miForm As New Form_Clientes
miForm.Show()
Para abrir un formulario de manera Modal es necesario especificarlo a través del método
ShowDialog,
Dim frm2 As New Form2
frm2.ShowDialog()
Al abrir un formulario con el método ShowDialog() el evento que ha realizado la llamada se
detiene hasta que se cierra el formulario modal, en cambio, al utilizar Show(), continua el
evento que ha realizado la llamada.
FORMULARIOS MDI
Visual Basic permite crear aplicaciones empleando una interfaz de múltiples
documentos (MDI - Multiple Document Interface). En una aplicación MDI, se pueden
abrir varias ventanas hijas desde una ventana padre. En una aplicación MDI puede haber
varias ventanas hijas, pero solo una ventana padre por aplicación. El formulario padre
actúa como contenedor de los formularios hijos. Muchos procesadores de textos bajo
Windows son buenos ejemplos de aplicaciones MDI.
Un formulario MDI admite los mismos controles que un formulario normal, aunque dada
su orientación de formulario contenedor, se recomienda limitar los controles en un MDI
a los estrictamente necesarios. El menú es el ejemplo más identificativo de control
idóneo para un formulario MDI, ya que a través de sus opciones, podremos abrir los
formularios hijos de la aplicación.
2
Para cerrar una aplicación con un sistema MDI tan solo es necesario cerrar el formulario
padre.
4. Crea otro formulario llamado FormHijo con un control TextBox que ocupe todo el
formulario y que contenga las siguientes propiedades:
i. Multiline a True
ii. Anchor: Top, Bottom, Left, Right
3
5. En el formulario FormPadre, vamos a configurar el control MenuStrip para que
permita ver todas las ventanas abiertas en su opción de menú Ventana. Para ello
la propiedad MdiWindowListItem del MenuStrip debe ser el nombre del control
que se corresponde con el menú Ventana (VentanasToolStripMenuItem)
6. En el control MenúStrip se deben configurar todas las respuestas a los eventos
de menú
a. Nuevo
Private Sub NuevoToolStripMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles NuevoTxtToolStripMenuItem.Click
'Crear una instancia del formulario hijo
Dim hijo As New Hijo()
'Indicar su posición en la jerarquía MDI
hijo.MdiParent = Me
'Ver el nuevo formulario maximizado dentro de la ventana padre
hijo.WindowState = FormWindowState.Maximized
hijo.Show()
End Sub
b. Abrir
Private Sub AbrirToolStripMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles AbrirToolStripMenuItem.Click
'Crear una instancia del formulario hijo
Dim hijo As New Hijo()
'Indicar su posición en la jerarquía MDI
hijo.MdiParent = Me
'Ver el nuevo formulario maximizado dentro de la ventana padre
hijo.WindowState = FormWindowState.Maximized
' Seleccionar el fichero que queremos abrir
Dim ofD As New OpenFileDialog
If ofD.ShowDialog() = DialogResult.OK Then
' Leer el contenido de ese fichero
Dim sr As New System.IO.StreamReader(ofD.FileName,
System.Text.Encoding.Default, True)
' Asignar el stream al textbox
hijo.TextBox1.Text = sr.ReadToEnd()
'Almacenar nombre del fich en la barra de título de la ventana
hijo.Text = ofD.FileName
'Cerrar el stream
sr.Close()
'Mostrar la ventana
hijo.Show()
End If
End Sub
c. Guardar
Private Sub GuardarToolStripMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles GuardarToolStripMenuItem.Click
'Accedo al formulario hijo activo
Dim hijo As Hijo
hijo = CType(Me.ActiveMdiChild, Hijo)
'Si hay un formulario hijo activo
If Not hijo Is Nothing Then
'Crea un stream de escritura con el fichero cuya ruta
‘ está almacenata en hijo.Text
4
Dim sw As New System.IO.StreamWriter(hijo.Text, False,_
System.Text.Encoding.Default)
sw.WriteLine(hijo.TextBox1.Text)
'Cerramos el stream
sw.Close()
End If
End Sub
d. Guardar como
Private Sub GuardarComoToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
GuardarComoToolStripMenuItem.Click
'Accedo al formulario hijo activo
Dim hijo As Hijo
hijo = CType(Me.ActiveMdiChild, Hijo)
If Not hijo Is Nothing Then
'Configuro la ventana para guardar el fichero
Dim cuadroGuardar As New SaveFileDialog
cuadroGuardar.InitialDirectory =_
My.Computer.FileSystem.SpecialDirectories.MyDocuments
cuadroGuardar.Filter = "Text Files (*.txt)|*.txt|All_ Files
(*.*)|*.*"
cuadroGuardar.FileName = hijo.Text
'Si pulsamos el botón de aceptar
If (cuadroGuardar.ShowDialog(Me) =_
System.Windows.Forms.DialogResult.OK) Then
'Creamos un stream entre el fichero y el contenido
‘del textbox
Dim sw As New_
System.IO.StreamWriter(cuadroGuardar.FileName, False,_
System.Text.Encoding.Default)
sw.WriteLine(hijo.TextBox1.Text)
'Cerramos el stream
sw.Close()
End If
End If
End Sub
e. Cerrar
Private Sub CerrarToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
CerrarToolStripMenuItem.Click
'Acceder al formulario hijo activo
Dim hijo As Hijo
hijo = CType(Me.ActiveMdiChild, Hijo)
If Not hijo Is Nothing Then
hijo.Close()
End If
End Sub
f. Salir
Private Sub SalirToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
SalirToolStripMenuItem.Click
Close()
End Sub
7. Cuando se introduzca todo el código se debe ejecutar y comprobar su
funcionamiento
5
MEJORAS AL PROGRAMA
1. Conseguir que
a. En la barra de título de los nuevos documentos se muestre el texto
“Documento i”, siendo i el número correlativo de cada nuevo documento.
b. Al guardar la primera vez solicite la ruta y el nombre de fichero.
c. Al guardar y dar un nombre al fichero, éste se muestre en la barra de título
2. Agregar una barra de herramientas que cubra la misma funcionalidad
3. Agregar una línea de estado
ENLACES UTILIZADOS
http://www.recursosvisualbasic.com.ar/htm/vb-net/1-ejemplos-con-textbox-en-vb-net.htm