c# winform 自定义模板 printDocument 自定义分页+Datatable 自动分页

15 篇文章 0 订阅

public Form7()
        {
            InitializeComponent();
        }
        private int currentPageIndex = 0;
        private int rowCount = 0;
        private int pageCount = 3;
        private void Form7_Load(object sender, EventArgs e)
        {
            PrintPreviewDialog ppvw = new PrintPreviewDialog();
            ppvw.PrintPreviewControl.Zoom = 1.0; //显示比例为100%
            System.Drawing.Printing.PrintDocument printDoc = new System.Drawing.Printing.PrintDocument();
            PrintDialog MyDlg = new PrintDialog();
            MyDlg.Document = printDoc;
            printDoc.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("A4", 1123, 794);
            printDoc.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(60, 60, 60, 60); //设置边距             
            ppvw.Document = printDoc;   //设置要打印的文档 
            ((Form)ppvw).WindowState = FormWindowState.Maximized; //最大化  
            printDoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDoc_PrintPage); //打印事件 
            //printDoc.EndPrint += new System.Drawing.Printing.PrintEventHandler(printDoc_EndPrint);
            ppvw.Document.DefaultPageSettings.Landscape = true;    // 设置打印为横向               
            ppvw.ShowDialog(); //打开预览
        }

        private void printDoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            Font titleFont = new Font("宋体", 12, System.Drawing.FontStyle.Regular);//标题字体
            System.Drawing.Brush brush = new SolidBrush(System.Drawing.Color.Black);//画刷   
           
            if (currentPageIndex == 0)   //当为第一页时
            {
                e.Graphics.DrawString("111111111111111111111111111", titleFont, brush, new Point(0, 0));

            }
            else if (currentPageIndex == 1)   //当为第二页时
            {
                e.Graphics.DrawString("22222222222222222", titleFont, brush, new Point(0, 0));

            }
            else if (currentPageIndex == 2)
            {


                ThirdPage(e,currentPageIndex);


            }
            ThirdPage(e, 0);

            #region 分页控件
            currentPageIndex++;      //加新页
            if (currentPageIndex < pageCount)
            {
                e.HasMorePages = true;  //如果小于定义页 那么增加新的页数
            }
            else
            {
                e.HasMorePages = false; //停止增加新的页数
                currentPageIndex = 0;
            }
            #endregion

        }
      
        /// <summary> 
        /// 返回分页的页数 
         /// </summary> 
         /// <param name="count">总条数</param> 
         /// <param name="pageye">每页显示多少条</param> 
         /// <returns>如果 结尾为0:则返回1</returns> 
         public static  int PageCount(int count, int pageye) {
             int page = 0;
             int sesepage = pageye;
             if (count % sesepage == 0) { page = count / sesepage; } else { page = (count / sesepage) + 1; }
            if (page == 0) { page += 1; }
             return page;
         }

         public void ThirdPage(System.Drawing.Printing.PrintPageEventArgs e, int PageIndex)
         {
             Font titleFont = new Font("宋体", 12, System.Drawing.FontStyle.Regular);//标题字体
             System.Drawing.Brush brush = new SolidBrush(System.Drawing.Color.Black);//画刷   
             #region DataTable
             DataTable dt = new DataTable();
             dt.Columns.Add("id");
             dt.Columns.Add("name");
             dt.Columns.Add("zhi");
             dt.Columns.Add("can");
             dt.Columns.Add("date");
             for (int i = 0; i < 100; i++)
             {
                 DataRow dr = dt.NewRow();
                 dr["id"] = i.ToString();
                 dr["name"] = "检查名称"+i.ToString();
                 dr["zhi"] = "80-90";
                 dr["can"] = "参考值";
                 dr["date"] = "|";
                 dt.Rows.Add(dr);

             }
             dt.Dispose();
             #endregion

             int intPageCount=PageCount(100, 10);
             if (PageIndex > 0)
             {
                
                 pageCount = pageCount + intPageCount;
             }

    

            for (int i = 0; i <= intPageCount; i++)
            {
                if (currentPageIndex == i + 2)   //当为第3页时
                {


                    e.Graphics.DrawString(currentPageIndex + "==" + dt.Rows[i]["name"].ToString(), titleFont, brush, new Point(0, 0));

                }
             
             }
         }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值