【问题标题】:Show all pages of PrintDocument on PrintPreviewControl在 PrintPreviewControl 上显示 PrintDocument 的所有页面
【发布时间】:2010-02-04 16:04:13
【问题描述】:

我在 PrintDocument 中创建多个页面并在 PrintPreviewControl 中显示它们时遇到问题。我可以很容易地创建一个页面,但是将多个页面串在一起却让我望而却步。

我最终将使用 GDI 绘制几页内容,但我无法让这样的东西按预期工作。

private PrintDocument doc = new PrintDocument();
private string[] printMe = new string[]{ "page1", "page2", "page3" );
private int pageCount = 0;

private void FormLoad(object sender, EventArgs e)
{
 doc.PrintPage += new PrintPageEventHandler(PrintPage);
 PrintPreviewControl.Document = doc;
}

private void doc_BeginPrint(object sender, PrintEventArgs e){ pageCount = 0; }

private void PrintPage(object sender, PrintPageEventArgs e)
{
 Graphics g = e.Graphics;
 g.DrawString(drawMe[pageCount++], "Lucida Console", Brushes.Black, new Point(20,20));

 e.HasMorePages = (pageCount  printMe.Length );
}

这个想法是创建 3 个单独的页面,并在 PrintPreview 控件中显示。我错过了什么?

【问题讨论】:

    标签: c# winforms printing printdocument


    【解决方案1】:

    您的代码 sn-p 恰好在您分配 e.HasMorePages 的关键点处被破坏。您的代码中有一个明显的问题:您需要实现一个 BeginPrint 事件处理程序来将页面计数器重置为 0。

    【讨论】:

    • 我已经添加了这样一个EventHandler,但它仍然只显示PrintPreviewControl中的第一页。 “PrintPage”函数执行了 3 次,但唯一显示的页面是包含“page1”字符串的页面。我似乎不知道如何添加新页面。
    • 我不知道,你没有修复你的 sn-p。只是为了确定:您在预览对话框中正确使用了页码选择器吗?工具栏的右上角。
    • 这绝对有效,谢谢;但是,有没有办法将所有页面一起显示?有没有办法在 PrintPreviewControl 中连续显示所有三个页面?
    • 使用工具栏。您最多可以同时显示 6 个页面。
    • 我不是要密集,但我不知道你指的是什么工具栏。我认为它是一些与打印相关的工具栏,但我不熟悉它在哪里。
    【解决方案2】:

    我不确定如何默认显示所有页面,但您可以通过设置Columns 属性在PrintPreviewControl 中显示多个页面,该属性位于Layout 部分Properties 窗口和/或 Behavior 部分中的 Rows 属性设置为大于 1 的值。

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 1970-01-01
      • 2019-10-10
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 2015-04-09
      • 2016-04-15
      • 2017-06-11
      相关资源
      最近更新 更多