wpf内容打印文本框

时间:2018-07-26 15:23:46

标签: wpf printing textbox

我正在使用WPF开发文本编辑器,并尝试了以下代码来打印文本框的内容:

PrintDialog pd = new PrintDialog();
if ((pd.ShowDialog() == true))
{
    RichTextBox richTB = new RichTextBox();
    richTB.Document.Blocks.Add(new Paragraph(new Run(TBXEditor.Text)));

    //use either one of the below      
    pd.PrintVisual(richTB as Visual, "printing as visual");
    pd.PrintDocument((((IDocumentPaginatorSource)richTB.Document).DocumentPaginator), "printing as paginator");
}

它不能很好地工作。如果单击打印菜单一次,我将得到两张打印,并且没有剩余页边距。该行开头的文本没有完全打印

有人有更好的解决方案吗?

1 个答案:

答案 0 :(得分:2)

由于要调用两种打印方法(pd.PrintVisualpd.PrintDocument),因此获得了两次打印。为了保证金,您需要为Padding设置FlowDocument。您可以参考下面的代码,该代码可以正常工作。

此外,您无需创建RichTextBox并在其中访问FlowDocument。相反,您可以创建FlowDocument并使用它本身。

PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog())
{
    FlowDocument flowDocument = new FlowDocument();
    flowDocument.PagePadding = new Thickness(50);
    flowDocument.Blocks.Add(new Paragraph(new Run(TBXEditor.Text)));

    printDialog.PrintDocument((((IDocumentPaginatorSource)flowDocument).DocumentPaginator), "Using Paginator");
}