Gewusst wie: Drucken eines Formulars
Aktualisiert: November 2007
In diesem Beispiel wird veranschaulicht, wie Sie eine Kopie des aktuellen Formulars drucken.
Beispiel
[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();
}
Kompilieren des Codes
Dieses Beispiel setzt Folgendes voraus:
Eine PrintDocument-Komponente mit dem Namen printDocument1 mit einem PrintPage-Ereignishandler
Ein Button-Steuerelement mit dem Namen printButton mit einem Click-Ereignishandler
Die bestehenden Ereignishandler werden durch den Beispielcode ersetzt. Das Formular wird gedruckt, sobald auf printButton geklickt wird.
Robuste Programmierung
Unter folgenden Bedingungen kann es zu Ausnahmen kommen:
Sie verfügen nicht über die entsprechende Berechtigung für den Zugriff auf den Drucker.
Sie verfügen nicht über die entsprechende Berechtigung, nicht verwalteten Code zu verwenden.
Es ist kein Drucker installiert.
Sicherheit
Um dieses Beispiel ausführen zu können, müssen Sie über die Berechtigung verfügen, nicht verwalteten Code auszuführen und auf den Drucker zuzugreifen.
Siehe auch
Konzepte
Entwerfen einer Benutzeroberfläche in Visual C#