none
用了printpreivewdialog 和printdocumnet 怎样才可以多页打印?? RRS feed

  • 问题

  • private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
         
          int temp=1;//设置系数格行距离
          e.Graphics.DrawString("大东物业", new Font("宋体", 30), Brushes.Black, 100, 80);//设置标题
          e.Graphics.DrawString("楼宇/大厦", new Font("宋体", 15), Brushes.Black, 100, 145);//设置标题
          e.Graphics.DrawString("座数", new Font("宋体", 15), Brushes.Black, 250, 145);
          e.Graphics.DrawString("楼层", new Font("宋体", 15), Brushes.Black, 350, 145);
          e.Graphics.DrawString("单位", new Font("宋体", 15), Brushes.Black, 450, 145);
          e.Graphics.DrawString("售价", new Font("宋体", 15), Brushes.Black, 550, 145);
          e.Graphics.DrawString("租金", new Font("宋体", 15), Brushes.Black, 650, 145);
          for (int i = 0; i < dataGridView1.RowCount ; i++)
          {
           
            if ((bool)dataGridView1.Rows[i].Cells[0].EditedFormattedValue == true)
            {
              e.Graphics.DrawString(dataGridView1.Rows[i].Cells["garden"].Value.ToString(), new Font("宋体", 15), Brushes.Black, 100, 160+temp*30);
              e.Graphics.DrawString(dataGridView1.Rows[i].Cells["block"].Value.ToString(), new Font("宋体", 15), Brushes.Black, 250, 160 + temp * 30);
              e.Graphics.DrawString(dataGridView1.Rows[i].Cells["floor"].Value.ToString(), new Font("宋体", 15), Brushes.Black, 350, 160 + temp * 30);
              e.Graphics.DrawString(dataGridView1.Rows[i].Cells["unit"].Value.ToString(), new Font("宋体", 15), Brushes.Black, 450, 160 + temp * 30);
              e.Graphics.DrawString(dataGridView1.Rows[i].Cells["sellprice"].Value.ToString(), new Font("宋体", 15), Brushes.Black, 550, 160 + temp * 30);
              e.Graphics.DrawString(dataGridView1.Rows[i].Cells["rentprice"].Value.ToString(), new Font("宋体", 15), Brushes.Black, 650, 160 + temp * 30);
              temp++;
    
            }
          }
        }
    
     private void button6_Click(object sender, EventArgs e)
        {
          //开启操作系统的防锯齿功能
          this.printPreviewDialog1.UseAntiAlias = true;
          //设置预览的文档
          this.printPreviewDialog1.Document = this.printDocument1;
          //打开预览的窗口
          printPreviewDialog1.ShowDialog();
    
        }
    現在只能打印第一頁.井且沒有第二頁...
    2011年6月7日 8:09

答案

全部回复

  • 現在加了 if (temp % 20 == 0)
                    {
                        e.HasMorePages = true;
                        return;
                    }
                    else
                    {
                        e.HasMorePages = false;
                    }
     for (int i = 0; i < dataGridView1.RowCount ; i++)之內 但是跳不出死循環...求大大幫忙.....
    
    2011年6月9日 4:19
  • 这里有篇牛人的博客文章,不知道你看到过没:http://www.cnblogs.com/scottckt/archive/2008/01/30/1059281.html

    希望能帮到你。


    Jackie Sun [MSFT]
    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手




    • 已标记为答案 jjchick07 2011年6月12日 2:50
    2011年6月9日 9:10
    版主