Compartir a través de


Cómo: Imprimir un formulario

Actualización: noviembre 2007

En este ejemplo se muestra cómo imprimir una copia del formulario actual.

Ejemplo

[System.Runtime.InteropServices.DllImport("gdi32.dll")]
public static extern long BitBlt (IntPtr hdcDest, int nXDest, int nYDest, 
    int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
private Bitmap memoryImage;
private void CaptureScreen()
{
    Graphics mygraphics = this.CreateGraphics();
    Size s = this.Size;
    memoryImage = new Bitmap(s.Width, s.Height, mygraphics);
    Graphics memoryGraphics = Graphics.FromImage(memoryImage);
    IntPtr dc1 = mygraphics.GetHdc();
    IntPtr dc2 = memoryGraphics.GetHdc();
    BitBlt(dc2, 0, 0, this.ClientRectangle.Width,
        this.ClientRectangle.Height, dc1, 0, 0, 13369376);
    mygraphics.ReleaseHdc(dc1);
    memoryGraphics.ReleaseHdc(dc2);
}
private void printDocument1_PrintPage(System.Object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    e.Graphics.DrawImage(memoryImage, 0, 0);
}
private void printButton_Click(System.Object sender, System.EventArgs e)
{
    CaptureScreen();
    printDocument1.Print();
}

Compilar el código

Para este ejemplo se necesita:

  • Un componente PrintDocument denominado printDocument1 con un controlador de eventos PrintPage.

  • Un objeto Button denominado printButton con un controlador de eventos Click.

El código del ejemplo reemplaza los controladores de eventos existentes. El formulario se imprime cuando se hace clic en printButton.

Programación eficaz

Las condiciones siguientes pueden producir una excepción:

  • No tiene permiso de acceso a la impresora.

  • No tiene permiso para utilizar código no administrado.

  • No hay ninguna impresora instalada.

Seguridad

Para ejecutar este ejemplo, debe tener permiso para ejecutar código no administrado y para tener acceso a la impresora.

Vea también

Conceptos

Diseñar una interfaz de usuario en Visual C#

Otros recursos

Personalizar, mostrar e imprimir formularios Windows Forms

Paseo guiado por Visual C#