Compartir a través de


Introducción al componente PrintDialog

La impresión en Formularios Windows Forms consiste principalmente en usar el PrintDocument componente para permitir que el usuario imprima. Los PrintPreviewDialog componentes de control, PrintDialog, y PageSetupDialog proporcionan una interfaz gráfica familiar a los usuarios del sistema operativo Windows.

El PrintDialog componente es un cuadro de diálogo preconfigurado que se usa para seleccionar una impresora, elegir las páginas que se van a imprimir y determinar otras opciones relacionadas con la impresión en aplicaciones basadas en Windows. Es una solución sencilla para la configuración de impresora e impresión en lugar de configurar su propio cuadro de diálogo. Puede permitir que los usuarios impriman muchas partes de sus documentos: imprimir todo, imprimir un intervalo de páginas seleccionado o imprimir una selección. Al confiar en cuadros de diálogo estándar de Windows, se crean aplicaciones cuya funcionalidad básica es inmediatamente familiar para los usuarios. El PrintDialog componente hereda de la CommonDialog clase .

Normalmente, se crea una nueva instancia del PrintDocument componente y se establecen las propiedades que describen qué imprimir mediante las PrinterSettings clases y PageSettings . Llamar al método Print realmente imprime el documento.

Trabajar con el componente

Use el método PrintDialog.ShowDialog para mostrar el cuadro de diálogo en tiempo de ejecución. Este componente tiene propiedades relacionadas con un único trabajo de impresión (PrintDocument clase) o con la configuración de una impresora individual (PrinterSettings clase). Una de las dos, a su vez, podría compartirse con varias impresoras.

El método show dialog box le ayuda a agregar el cuadro de diálogo de impresión al formulario. El PrintDialog componente aparece en la bandeja de la parte inferior del Diseñador de Windows Forms en Visual Studio.

Cómo capturar la entrada del usuario desde un PrintDialog en tiempo de ejecución

Puede establecer opciones relacionadas con la impresión en tiempo de diseño. A veces, es posible que quiera cambiar estas opciones en tiempo de ejecución, lo más probable es que se deba a las opciones realizadas por el usuario. Puede capturar la entrada del usuario para imprimir un documento usando los componentes PrintDialog y PrintDocument. Los pasos siguientes muestran el cuadro de diálogo de impresión de un documento:

  1. Agregue un PrintDialog y un PrintDocument componente a su formulario.

  2. Establezca la propiedad Document en el PrintDialog agregado al formulario PrintDocument.

    PrintDialog1.Document = PrintDocument1
    
    printDialog1.Document = printDocument1;
    
  3. Muestre el PrintDialog componente mediante el ShowDialog método .

    If PrintDialog1.ShowDialog() = DialogResult.OK Then
        PrintDocument1.Print()
    End If
    
    // display show dialog and if user selects "Ok" document is printed
    if (printDialog1.ShowDialog() == DialogResult.OK)
        printDocument1.Print();
    
  4. Las opciones de impresión del cuadro de diálogo del usuario se copian en la propiedad PrinterSettings del componente PrintDocument.

Creación de trabajos de impresión

La base de la impresión en Windows Forms es el PrintDocument componente, más concretamente, el PrintPage evento . Al escribir código para controlar el PrintPage evento, puede especificar qué imprimir y cómo imprimirlo. En los pasos siguientes se muestra cómo crear un trabajo de impresión:

  1. Agregue un PrintDocument componente al formulario.

  2. Escriba código para controlar el PrintPage evento.

    Tiene que codificar su propia lógica de impresión y especificar el material que se va a imprimir.

    Como material que se va a imprimir, en el ejemplo de código siguiente, se crea un gráfico de ejemplo en la forma de un rectángulo rojo en el PrintPage controlador de eventos.

    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        e.Graphics.FillRectangle(Brushes.Red, New Rectangle(100, 100, 100, 100))
    End Sub
    
    private void PrintDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) =>
        e.Graphics.FillRectangle(Brushes.Red, new Rectangle(100, 100, 100, 100));
    

También puede querer escribir código para los eventos BeginPrint y EndPrint. Ayuda a incluir un entero que representa el número total de páginas que se van a imprimir que se reducen a medida que se imprime cada página.

Nota:

Puede agregar un PrintDialog componente al formulario para proporcionar una interfaz de usuario (UI) limpia y eficaz a los usuarios. Establecer la Document propiedad del PrintDialog componente le permite establecer propiedades relacionadas con el documento de impresión con el que está trabajando en el formulario.

Para obtener más información sobre los detalles de los trabajos de impresión de Windows Forms, incluido cómo crear un trabajo de impresión mediante programación, vea PrintPageEventArgs.

Cómo completar trabajos de impresión

Con frecuencia, los procesadores de texto y otras aplicaciones que implican la impresión proporcionan la opción de mostrar un mensaje a los usuarios de que se ha completado un trabajo de impresión. Puede proporcionar esta funcionalidad en sus Windows Forms gestionando el evento del componente EndPrintPrintDocument.

El siguiente procedimiento requiere que haya creado una aplicación basada en Windows con un PrintDocument componente en él. Este procedimiento es la forma estándar de habilitar la impresión desde una aplicación basada en Windows. Para obtener más información sobre la impresión desde Formularios Windows Forms mediante el PrintDocument componente , vea Cómo crear trabajos de impresión.

  1. Establezca la DocumentName propiedad del PrintDocument componente.

    PrintDocument1.DocumentName = "SamplePrintApp"
    
    printDocument1.DocumentName = "SamplePrintApp";
    
  2. Escriba código para controlar el EndPrint evento.

    En el ejemplo de código siguiente, se muestra un cuadro de mensaje, que indica que el documento finalizó la impresión.

    Private Sub PrintDocument1_EndPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.EndPrint
        MessageBox.Show(PrintDocument1.DocumentName + " has finished printing.")
    End Sub
    
    private void PrintDocument1_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e) =>
        MessageBox.Show(printDocument1.DocumentName + " has finished printing.");