Compartir a través de


Impresión de un formulario (Windows Forms para .NET)

Como parte del proceso de desarrollo, normalmente querrá imprimir una copia del formulario de Windows Form. En el ejemplo de código siguiente se muestra cómo imprimir una copia del formulario actual mediante el método CopyFromScreen.

Ejemplo

Para ejecutar el código de ejemplo, agregue dos componentes a un formulario con la siguiente configuración:

Object Property\Event Valor
Botón Name Button1
Click Button1_Click
PrintDocument Name PrintDocument1
PrintPage PrintDocument1_PrintPage

El siguiente código se ejecuta cuando se hace clic en el Button1. El código crea un objeto Graphics a partir del formulario y guarda su contenido en una variable Bitmap denominada memoryImage. Se llama al método PrintDocument.Print, que invoca el evento PrintPage. El controlador de eventos de impresión dibuja el mapa de bits memoryImage en el objeto Graphics de la página de la impresora. Cuando se devuelve el código del controlador de eventos de impresión, se imprime la página.

namespace Sample_print_win_form1
{
    public partial class Form1 : Form
    {
        Bitmap memoryImage;
        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            Graphics myGraphics = this.CreateGraphics();
            Size s = this.Size;
            memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
            Graphics memoryGraphics = Graphics.FromImage(memoryImage);
            memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s);

            printDocument1.Print();
        }

        private void PrintDocument1_PrintPage(
           System.Object sender,
           System.Drawing.Printing.PrintPageEventArgs e)
        {
            e.Graphics.DrawImage(memoryImage, 0, 0);
        }
    }
}
Public Class Form1
    
    Dim memoryImage As Bitmap

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
         
        Dim myGraphics As Graphics = Me.CreateGraphics()
        Dim s As Size = Me.Size
        memoryImage = New Bitmap(s.Width, s.Height, myGraphics)
        Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
        memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, s)
        
        PrintDocument1.Print()
        
    End Sub

    Private Sub PrintDocument1_PrintPage(
        ByVal sender As System.Object, 
        ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

        e.Graphics.DrawImage(memoryImage, 0, 0)
        
    End Sub
End Class

Programación sólida

Las condiciones siguientes pueden provocar una excepción:

  • No tiene permiso para acceder a la impresora.

  • No hay ninguna impresora instalada.

Seguridad de .NET

Para ejecutar este ejemplo de código, debe tener permiso para acceder a la impresora que usa con el equipo.

Consulte también