c# - printdocument 打印问题只打印第一页

标签 c# .net winforms printing

我必须能够按列名称的顺序打印 ListView 中的所有项目,如下所示:

开始:(日期) 结束日期) 类次:(类次编号) 销售:(销售额)

它可以完美地打印我需要的内容,但它只打印第一页(或 ListView 的前 12 行)。但是,如果我将信息发送到消息框,它会发送所有 ListView 内容,因此它在打印中会导致它不会打印所有内容,但我无法弄清楚。

private void btnPrint_Click(object sender, EventArgs e)
    {

        try
        {
            PrintDialog pd = new PrintDialog();
            PrintDocument MyPrintDocument = new PrintDocument();
            MyPrintDocument.PrintPage += new PrintPageEventHandler(this.PrintPageEvent);
            pd.PrinterSettings.PrintRange = PrintRange.AllPages;
            MyPrintDocument.PrinterSettings.PrintRange = PrintRange.AllPages;
            MyPrintDocument.Print();
        }
}


 private void PrintPageEvent(object sender, PrintPageEventArgs ev)
     {
        string text = null;
        for (int i = 0; i < listView4.Items.Count; i++)
        {
            text += "Start: " + listView4.Items[i].Text + Environment.NewLine + "End: " + listView4.Items[i].SubItems[1].Text + Environment.NewLine + "Shift Number: " + listView4.Items[i].SubItems[2].Text + Environment.NewLine + "Total Sales: " + listView4.Items[i].SubItems[3].Text + Environment.NewLine + "----------------------------" + Environment.NewLine;
        }
        MessageBox.Show(text);
        Font MyFont = new Font("Arial", 12);
        ev.Graphics.DrawString("------------------------------------" +
    Environment.NewLine + text +
    Environment.NewLine + "------------------------------------", MyFont, new SolidBrush(System.Drawing.Color.Black),
            (ev.PageBounds.Left), ev.PageBounds.Top);
       }

最佳答案

您应该指定 PrintPageEventArgs.HasMorePages = true 来打印多页。所以,在你的情况下,你只需这样做

ev.HasMorePages = true;

PrintPageEventArgs.HasMorePages 属性 -

  • 获取或设置一个值,该值指示是否应打印附加页。
  • 如果应该打印额外的页面,则返回 true;否则,false
  • 默认为false

关于c# - printdocument 打印问题只打印第一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17220529/

相关文章:

c# - IQueryable、ICollection、IList 和 IDictionary 接口(interface)之间的区别

c# - 使用较多的 WPF(可选,包括 Silverlight).NET 论坛/讨论站点有哪些?

c# - 从任务并行库更新 ProgressBar UI 对象

c# - 从列表中过滤重复项

c# - 如何根据 g-score 修正路径?

c# - HttpWebRequest 在另一个线程中返回请求的结果 (Monotouch)

.net - 捕获导致内存不足异常的位图

c# - 如何调用 WebBrowser Navigate 遍历多个 url?

c# - 如何在 Windows 窗体 C# 中执行代码时显示动画加载窗体

javascript - 获取客户的日期格式名称