Wo du es einfügen sollst? Da sind doch schon alle Events...
Oben unter "Public Class Form1":
Code:
Private Const SRCCOPY As Integer = &HCC0020
Private Declare Function BitBlt _
Lib "gdi32.dll" ( _
ByVal hdcDest As IntPtr, _
ByVal x As Int32, _
ByVal y As Int32, _
ByVal Width As Int32, _
ByVal Height As Int32, _
ByVal hdcSrc As IntPtr, _
ByVal xSrc As Int32, _
ByVal ySrc As Int32, _
ByVal dwRop As Int32 _
) As Boolean
Private formImage As Bitmap
Public Sub PrintForm()
' Gibt eine Bildschirmkopie einer am Bildschirm komplett
' sichtbaren Form auf dem Drucker aus (Screenshot).
' Platzieren Sie diesen Code im Form-Klassenmodul der
' Form, die Sie ausdrucken möchten.
' Zunächst: Bildschirmkopie der Form erzeugen.
' Nachteil: Verdeckte und anderweitig nicht sichtbare
' Teile(der) WinForm werden nicht mit in die Grafik
' aufgenommen.
' Graphics-Objekt für die Form erzeugen
Dim formGraphics As Graphics = Me.CreateGraphics
' Kompatible Bitmap erzeugen und Graphics-Objekt abholen
formImage = New Bitmap(Me.Width, Me.Height, formGraphics)
Dim memGraphics As Graphics = Graphics.FromImage(formImage)
' Quell- und Ziel-DCs abholen
Dim sourceDC As IntPtr = formGraphics.GetHdc
Dim targetDC As IntPtr = memGraphics.GetHdc
' Kopieren ("Screenshot")
BitBlt(targetDC, _
0, 0, Me.ClientRectangle.Width, Me.ClientRectangle.Height, _
sourceDC, _
Me.ClientRectangle.X, Me.ClientRectangle.Y, _
SRCCOPY)
' Alternative Variante folgend auskommentiert:
' Mit dem folgenden Code wird die gesamte Form (inkl. Rändern
' und Titelzeile) in die Ziel-Bitmap kopiert:
' BitBlt(targetDC, _
' 0, 0, Me.Size.Width, Me.Size.Height, _
' sourceDC, _
' 0, 0, _
' SRCCOPY)
' DCs freigeben
formGraphics.ReleaseHdc(sourceDC)
formGraphics.Dispose()
memGraphics.ReleaseHdc(targetDC)
memGraphics.Dispose()
' In formImage steht die Abbildung der Form nun zur Verfügung.
' Die Abbildung aus formImage ausdrucken:
PrintDocument1.Print()
formGraphics.Dispose()
End Sub
Dann fügst du einen Button hinzu, doppelklick auf ihn:
Dann fügst du noch ein PrintDocument aus der Toolbox hinzu:
Code:
Private Sub PrintDocument1_PrintPage( _
ByVal sender As System.Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs _
) Handles PrintDocument1.PrintPage
' Screenshot ausdrucken
e.Graphics.DrawImage(formImage, 0, 0)
End Sub
Per Buttonklick wird dann deine Form ausgedruckt.