You are on page 1of 6

6.

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.

EL CÓDIGO DEL FORMULARIO


Existen varios ficheros ligados a los formularios de un proyecto, entre otros ficheros
destacamos:
• Archivo Application.Designer.vb
o Existe uno por proyecto
o Esta dentro del directorio My Poryect del proyecto
o Incluye características generales de la aplicación y formulario de inicio
• Archivo FormX.Designer.vb
o Uno por formulario
o Está dentro del directorio del proyecto
o Implementa parcialmente la clase Form
o Incluye el código necesario para crear y destruir los controles del formulario
• Archivo FormNombre.vb (FormNombre es el nombre del formulario)
o Es un fichero que contiene la clase FormNombre
o Contiene los controladores de los eventos
o Se puede ver en formato diseño o código

FORMULARIOS INICIAL DE LA SOLUCCIÓN


Para indicar el formulario que va a ser el punto de entrada de la solución se debe ir a las
propiedades del proyecto de inicio y modificar el elemento Formulario de inicio de la
pestaña Aplicación.

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.

El formulario padre es aquel formulario que tiene su propiedad IsMdiContainer a True.


Al crear una instancia de un formulario hijo se debe configurar la propiedad MdiParent para
que se corresponda con el formulario padre.
El formulario padre contiene la colección MdiChildren en donde se almacenan todas las
ventanas abiertas en un determinado momento.
Cada objeto ventana contienen la propiedad WindowState que determina el estado de la
ventana (minimizado, maximizado y normal)
Si se quiere que se generen varias ventanas a hijas se crea una instancia cada vez que se
llama a una de ellas, en caso contrario no se realiza esta acción.

CREACIÓN DE FORMULARIOS MDI


Vamos a mostrar la creación de un sencillo sistema de formularios MDI utilizando un
ejemplo:
1. Crea un formulario padre de la forma habitual y dale el nombre de FormPadre
2. Para transformar un formulario convencional en un formulario padre MDI debes
cambiar su propiedad IsMdiContainer a True.
3. Introduce un control MenuStrip con las siguientes opciones

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

You might also like