gpt4 book ai didi

c# - 如何在 WinForms# 中打印面板?

转载 作者:行者123 更新时间:2023-11-30 15:28:03 24 4
gpt4 key购买 nike

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

    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();
}

关于c# - 如何在 WinForms# 中打印面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26436033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com