UTILIZAR EL CONTROL PRINTDIALOG
Para poder realizar este ejercicio de una forma óptima se necesita tener instalada una impresora en el equipo, si no se dispone de una se entregará el procedimiento de cómo llevar a cabo esta labor.
En este proyecto veremos un adelanto de cómo crear context menú, estos se verán en más detalle en el punto aplicaciones de menús.
- Crea un proyectos Windows, el cual llamaremos WinImprimir.- Agregaremos al formulario un control TextBox, con el siguiente text por defecto “Hola como están todos”, quedando de la siguiente forma:
- Arrastraremos desde el cuadro de herramientas un control PrintDocument, el cual renombraremos prnDoc.
- Dentro de la sección general, de la clase definiremos las siguientes variables:
' crearemos un context menú
Public WithEvents mnu As New ContextMenu
Public WithEvents mnuItem1 As New MenuItem("Abrir")
Public WithEvents mnuItem2 As New MenuItem("Cerrar")
Public WithEvents mnuPrint As New MenuItem("&Imprimir")
- Crearemos el método que atenderá el evento clic del menuitem Imprimir, de la siguiente forma:Private Sub mnuPrint_Clik(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuPrint.Click
Dim pdDlg As New PrintDialog
pdDlg.Document = prnDoc
If pdDlg.ShowDialog = Windows.Forms.DialogResult.OK Then
prnDoc.Print()
End If
End Sub
Es importante destacar que la atención de los eventos por un método se realiza asociando el método al evento con la clausula Handles y lyego el evento, en el método anterior se hace de la siguiente forma Handles mnuPrint.Click
- En el método que atiende el evento load del formulario definiremos las siguientes líneas de código:' agregaremos los items al menú
mnu.MenuItems.Add(mnuItem1)
mnu.MenuItems.Add(mnuItem2)
mnu.MenuItems.Add(mnuPrint)
' asociaremos el context menú al textbox
Me.TextBox1.ContextMenu = mnu
Private Sub prnDoc_PrintPage(ByVal sender As Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
Handles prnDoc.PrintPage
Dim Ypos As Integer = e.MarginBounds.Top
Dim Xpos As Integer = e.MarginBounds.Left
Dim fontComSans As New Font("Comic Sans", 12, FontStyle.Regular, GraphicsUnit.Point)
Dim brshSolBlk As New SolidBrush(Color.Black)
Dim strToPrint = Me.TextBox1.Text
e.Graphics.DrawString(strToPrint, fontComSans, brshSolBlk, Xpos, Ypos)
End Sub
Al ejecutar la aplicación se podrán observar las siguientes interfaces:Seleccionar la opción imprimir que abrirá la siguiente interfaz:
Al presionar el botón Aceptar, el validador if definido confirmará si es ok o no, de ser ok, se continúa con el proceso de impresión:
Si no existe una impresora aparecerá el siguiente error, ya que no ha sido controlado:
Para controlar el error cuando no exista una impresora conectada al equipo haremos lo siguiente:
En el método que atiende el evento clic del menú Item Imprimir, realizaremos los siguientes cambios, agregando y en bloque try … catch.
Dim pdDlg As New PrintDialog
pdDlg.Document = prnDocIf pdDlg.ShowDialog = Windows.Forms.DialogResult.OK Then
Try
prnDoc.Print()
Catch ex As System.Exception
MessageBox.Show(ex.Message)
End Try
End If
No hay comentarios:
Publicar un comentario