Información general sobre el componente PrintDialog (Windows Forms para .NET)

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

El componente PrintDialog es un cuadro de diálogo preconfigurado que se utiliza para seleccionar una impresora, elegir las páginas que se quieren imprimir y determinar otra configuración relacionada con la impresión en aplicaciones basadas en Windows. Se trata de una solución sencilla para la impresora y la configuración relacionada con la impresión en lugar de configurar su propio cuadro de diálogo. Puede permitir que los usuarios impriman diversas partes de sus documentos: imprimir todo, imprimir un intervalo de páginas seleccionado o imprimir una selección. Al basarse en cuadros de diálogo estándar de Windows, crea aplicaciones cuya funcionalidad básica resultará de inmediato familiar a los usuarios. El componente PrintDialog hereda de la clase CommonDialog.

Normalmente, se crea una instancia del componente PrintDocument y se establecen las propiedades que describen lo que se va a imprimir mediante las clases PrinterSettings y PageSettings. Al llamar al método Print, realmente se imprime el documento.

Trabajo 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 (clase PrintDocument) o con la configuración de una impresora individual (clase PrinterSettings). Varias impresoras, a su vez, pueden compartir alguna de las dos.

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

Procedimiento para capturar datos proporcionados por el usuario de un componente PrintDialog en tiempo de ejecución

Puede establecer opciones relacionadas con la impresión en tiempo de diseño. A veces, es posible que desee cambiar estas opciones en tiempo de ejecución, probablemente por las opciones elegidas por el usuario. Puede capturar la entrada del usuario para imprimir un documento mediante los componentes PrintDialog y PrintDocument. En los pasos siguientes se muestra el cuadro de diálogo de impresión para un documento:

  1. Agregue un componente PrintDialog y PrintDocument al formulario.

  2. Establezca la propiedad Document de PrintDialog en el PrintDocument que se agregó al formulario.

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

    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 usuario del cuadro de diálogo se copiarán 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 componente PrintDocument; más concretamente, el evento PrintPage. Al escribir código para controlar el evento PrintPage, 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 componente PrintDocument al formulario.

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

    Tendrá que codificar su propia lógica de impresión. Además, tendrá que especificar el material que se va a imprimir.

    Como material de impresión, en el ejemplo de código siguiente, se crea un gráfico de ejemplo en forma de rectángulo rojo en el controlador de eventos PrintPage.

    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 escribir código para los eventos BeginPrint y EndPrint. Le ayudará a incluir un entero que represente el número total de páginas que se van a imprimir, que se reducirá a medida que se imprima cada página.

Nota:

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

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

Finalización de trabajos de impresión

Con frecuencia, los procesadores de texto y otras aplicaciones que implican la impresión ofrecen la opción de mostrar a los usuarios un mensaje que les indique que se ha completado un trabajo de impresión. Puede proporcionar esta funcionalidad en Windows Forms si controla el evento EndPrint del componente PrintDocument.

El procedimiento siguiente requiere que haya creado una aplicación basada en Windows que contenga un componente PrintDocument. El procedimiento que se muestra a continuación es la manera habitual de habilitar la impresión desde una aplicación basada en Windows. Para obtener más información sobre la impresión desde Windows Forms mediante el componente PrintDocument, vea Creación de trabajos de impresión.

  1. Establezca la propiedad DocumentName del componente PrintDocument.

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

    En el ejemplo de código siguiente, se muestra un cuadro de mensaje que indica que el documento ha acabado de imprimirse.

    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.");