如何在WinFormc#中打印面板?

我有一个带有标签和datagridview的面板.我正在尝试使用此代码打印面板及其内容

    PrintDialog myPrintDialog = new PrintDialog();
        System.Drawing.Bitmap memoryImage = new System.Drawing.Bitmap(panel2.Width, panel2.Height);
        panel2.DrawToBitmap(memoryImage, panel2.ClientRectangle);
        myPrintDialog.ShowDialog();

            System.Drawing.Printing.PrinterSettings values;
            values = myPrintDialog.PrinterSettings;
            myPrintDialog.Document = printDocument1;
            printDocument1.PrintController = new StandardPrintController();
            printDocument1.Print();

        printDocument1.Dispose();

但是它什么也不打印.我删除了datagridview,但仍然不打印任何内容.然后,我更改面板的背面颜色,但再次打印白页.请指导我该怎么做?

解决方法:

将此代码添加到PrintPage事件,然后从PrintDocument类对象调用Print()方法.

private void doc_PrintPage(object sender, PrintPageEventArgs e)
{
    float x = e.MarginBounds.Left;
    float y = e.MarginBounds.Top;
    Bitmap bmp = new Bitmap(panel2.Width, panel2.Height);
    panel2.DrawToBitmap(bmp, new Rectangle(0, 0, panel2.Width, panel2.Height));
    e.Graphics.DrawImage((Image)bmp, x, y);
}

像这样调用方法

PrintDocument doc = new PrintDocument();
doc.PrintPage += this.doc_PrintPage;

PrintDialog dlg = new PrintDialog();
dlg.Document = doc;
if (dlg.ShowDialog() == DialogResult.OK)
{
    doc.Print();
}
上一篇:python – 沿短轴延伸pandas面板框架


下一篇:EasyUI初级入门