【问题标题】:PrintDocument HasMorePages doesn't workPrintDocument HasMorePages 不起作用
【发布时间】:2013-09-15 23:20:11
【问题描述】:

数据表 (dt) 包含我要打印的数据。一页可以容纳 15 行。该代码适用于第一页,但注释行不起作用,并且打印了无数页。谁能帮忙解决这个问题?

private void Doc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    for (int y = 0; y <= dt.Columns.Count; y++)
    {
        e.Graphics.DrawLine(Pens.Black, 50 + (y * 150), 150, 50 + (y * 150), 1000);
    }
    for (int x = 0; x < dt.Rows.Count; x++)
    {
        e.Graphics.DrawLine(Pens.Black, 50, 200 + (x * 50), 700, 200 + (x * 50));
    }

    for (int z = 0; z < dt.Rows.Count; z++)
    {
        for (int d = 0; d < dt.Columns.Count; d++)
        {
            string element = dt.Rows[z][d].ToString();
            e.Graphics.DrawString(element, new Font("Arial", 14, FontStyle.Italic), Brushes.Black, 60 + (d * 150), 210 + (50 * Rows));
        }
        //if (z % 15 == 0)
        //{ e.HasMorePages = true; Rows = 0; break; }
        //else { e.HasMorePages = false; }
        Rows++;
    }
}

【问题讨论】:

  • 注释行“不起作用”是什么意思?你的意思是 e.HasMorePages 总是返回 true 吗?
  • 不,我的意思是 hasmorepages 返回无限页..第一页只返回第一行的数据。

标签: c# .net printing


【解决方案1】:

由于打印的页面数是无限的,因此您的问题与您如何确定e.HasMorePages = true 有关。由于z0 开始,它永远无法超过15,因为一旦它到达15,循环就会中断,e.HasMorePages = truez = 0 再次。你可以做些什么来解决你的问题是有一个变量来跟踪你打印了多少页。你可以试试这样的:

int pages = 0;
private void Doc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//...

    for (int z = pages * 15; z < dt.Rows.Count; z++)
    {
       for (int d = 0; d < dt.Columns.Count; d++)
         {
             //draw text
         }
       if (z - pages * 15 == 15)
       { e.HasMorePages = true; Rows = 0; pages++; break; }
       else { e.HasMorePages = false; }
       Rows++;
    }
} 

编辑:确保每次开始打印时将pages 重置为零,否则将无法正确打印。您可以使用BeginPrint 事件。

private void Doc_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e) 
{
    pages = 0;
}

【讨论】:

  • 它仍然返回无限页
  • 你确定把这个放在pages++吗?
  • 您能否发布更新后的代码,或者至少发布您更改的部分代码?
  • int pages = 0; for (int z = (pages*15); z
  • 我很抱歉它的出现这样,我提前感谢任何帮助。
猜你喜欢
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
相关资源
最近更新 更多