Ich arbeite an einem Windows-Formular, um ein Mitarbeiterkartenlayout zu erstellen. Zusätzlich dazu habe ich einen Button mit dem Namen "Drucken" hinzugefügt, der den Inhaltsbereich des Panels druckt. Wenn ich den Code ausführe, zeigt er einen Fehler an, wenn das Formular geladen wird:
Hier ist mein Code:
namespace SimpleReport
{
public partial class EmployeeCardForm : Form
{
//Deklariere folgende Objektvariablen
PrintDocument printdoc1 = new PrintDocument();
PrintPreviewDialog previewdlg = new PrintPreviewDialog();
Panel pannel = null;
public EmployeeCardForm()
{
InitializeComponent();
//Deklariere den Ereignishandler für den Druck im Konstruktor
printdoc1.PrintPage += new PrintPageEventHandler(printdoc1_PrintPage);
}
Bitmap MemoryImage;
public void GetPrintArea(Panel pnl)
{
MemoryImage = new Bitmap(pnl.Width, pnl.Height);
Rectangle rect = new Rectangle(0, 0, pnl.Width, pnl.Height);
pnl.DrawToBitmap(MemoryImage, new Rectangle(0, 0, pnl.Width, pnl.Height));
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawImage(MemoryImage, 0, 0);
base.OnPaint(e);
}
void printdoc1_PrintPage(object sender, PrintPageEventArgs e)
{
Rectangle pagearea = e.PageBounds;
e.Graphics.DrawImage(MemoryImage, (pagearea.Width / 2) - (this.panel1.Width / 2), this.panel1.Location.Y);
}
public void Print(Panel pnl)
{
pannel = pnl;
GetPrintArea(pnl);
previewdlg.Document = printdoc1;
previewdlg.ShowDialog();
}
private void button1_Click(object sender, EventArgs e)
{
Print(this.panel1);
}
}
}
Als ich den Code debuggte, erfuhr ich, dass er bei der ersten Zeile des OnPaint-Ereignisses abstürzt. Bitte helfen Sie mir.