C# 如何在windows窗体C中打印面板中的所有内容?

C# 如何在windows窗体C中打印面板中的所有内容?,c#,winforms,printing,panel,C#,Winforms,Printing,Panel,我在从面板(C#,windows窗体)打印时遇到问题。我创建了一个打印按钮,我为此编写了必要的代码,似乎只有一个文本框能够按预期显示。其余的控件,如RichTextBox,即使我在其中写入,也是空白的 Bitmap bitmap; private void btn_Print_Click(object sender, EventArgs e) { Print(this.panel_Doc_Print); } public void Print(Panel panel) { P

我在从面板(C#,windows窗体)打印时遇到问题。我创建了一个打印按钮,我为此编写了必要的代码,似乎只有一个文本框能够按预期显示。其余的控件,如RichTextBox,即使我在其中写入,也是空白的

Bitmap bitmap;

private void btn_Print_Click(object sender, EventArgs e)
{
    Print(this.panel_Doc_Print);
}

public void Print(Panel panel)
{
    PrinterSettings set = new PrinterSettings();
    panel_Doc_Print = panel;
    PrintArea(panel);
    print.Document = print_doc;
    print_doc.PrintPage += new PrintPageEventHandler(PrintImage);
    print.ShowDialog();
        
}

public void PrintImage(object sender, PrintPageEventArgs e)
{
    Rectangle page_area = e.PageBounds;
    e.Graphics.DrawImage(bitmap, (page_area.Width / 2) - (this.panel_Doc_Print.Width / 2), this.panel_Doc_Print.Location.Y);
}

public void PrintArea(Panel panel)
{
    bitmap = new Bitmap(panel.Width, panel.Height);
    panel.DrawToBitmap(bitmap, new Rectangle(0, 0, panel.Width, panel.Height));
}
打印之前,Windows窗体如下所示: .
单击“打印”按钮之前:
单击“打印”按钮后,会发生以下情况:

我做错了什么?当我点击按钮时,我希望程序打印整个面板,包括其中的所有项目和控件。这只发生在文本框上。正如您在第3张图片上看到的,打印图像的大小非常小。我想让它大致填写一张A4纸


此时,我太困惑了,无法单独解决此问题,因此我想寻求您的帮助。

RichTextBox控件不打印其内容,并且有更多限制(请参阅备注部分)。以这里的
ControlPrinter
类为例:,它还包含一个RichTextBox打印机(请阅读注释,最重要的是关于DpiAwarenes的内容)。RTB应该是唯一的问题;另请注意,其他控件将按相反的堆叠顺序打印。。