winform中打印datagridview中的数据无须制作报表

来源:互联网 发布:java延时执行 编辑:程序博客网 时间:2024/06/08 08:34

 只要添加2010里面的printDocument打印控件
具体代码:
GridPrinter gridPrinter;
        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            bool more = gridPrinter.DrawDataGridView(e.Graphics);
            if (more == true)
                e.HasMorePages = true;
        }

        private bool InitializePrinting()
        {
            PrintDialog printDialog = new PrintDialog();
            printDialog.AllowCurrentPage = true;
            printDialog.AllowPrintToFile = true;
            printDialog.AllowSelection = true;
            printDialog.AllowSomePages = true;
            printDialog.PrintToFile = false;
            printDialog.ShowHelp = true;
            printDialog.ShowNetwork = true;

            if (printDialog.ShowDialog() != DialogResult.OK)
                return false;

            printDocument1.DocumentName = "单位绩效工资";
            printDocument1.PrinterSettings = printDialog.PrinterSettings;
            printDocument1.DefaultPageSettings = printDialog.PrinterSettings.DefaultPageSettings;
            printDocument1.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(40, 40, 40, 40);

            gridPrinter = new GridPrinter(dataGridXinJi, printDocument1, true, true, "单位绩效工资", new Font("黑体", 18, FontStyle.Bold, GraphicsUnit.Point), Color.Blue, true);
            return true;
        }
        //打印事件
        private void Dy_Click(object sender, EventArgs e)
        {
            #region 打印信息
            if (dataGridUnit.Rows.Count > 0)
            {
                if (InitializePrinting())
                {
                    PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
                    printPreviewDialog.Document = printDocument1;
                    printPreviewDialog.ShowDialog();
                }
            }
            #endregion
        }