Compartir a través de


Cómo imprimir un formulario

En el transcurso del diseño de una aplicación, puede diseñar un formulario de tal manera que represente una página impresa. En el ejemplo de código siguiente se muestra cómo imprimir una copia del formulario actual mediante el CopyFromScreen método .

Ejemplo

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

Objeto Propiedad\Eventos Importancia
Botón Name Button1
Click Button1_Click
PrintDocument Name PrintDocument1
PrintPage PrintDocument1_PrintPage

El código siguiente se ejecuta cuando se hace clic en Button1. El código crea un Graphics objeto a partir del formulario y guarda su contenido en una Bitmap variable denominada memoryImage. Al método PrintDocument.Print se llama, el cual invoca el evento PrintPage. El controlador de eventos de impresión dibuja el memoryImage mapa de bits en el objeto de la página de la impresora Graphics. 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 provocan 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