Compartir a través de


Cómo: Imprimir una vista previa de un formulario

Actualización: noviembre 2007

Este ejemplo ilustra la forma de mostrar una vista preliminar de 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();
    printPreviewDialog1.Show();
}

Compilar el código

Para este ejemplo se necesita:

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

  • Un componente PrintPreviewDialog denominado printPreviewDialog1 con su propiedad Document establecida en printDocument1.

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

El código del ejemplo reemplaza los controladores de eventos existentes. Cuando se hace clic en printButton, se muestra una vista preliminar del formulario.

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.

  • El cuadro de diálogo de vista preliminar se eliminó previamente. Esto sucede cuando se cierra el cuadro de diálogo de vista preliminar.

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#