最近评论问题比较多,这是几年前得代码了,今天正好有时间我重新整理了下代码把源码Demo发上来给大家看看互相学习。
有问题随时交流。没有积分得私信我发你。
Demo地址:DataGirdView打印.rar-C#文档类资源-CSDN下载
//调用GridPrinter
首先添加一个printDocument控件并激活其printDocument_PrintPage事件写:
实例化类GridPrinter gridPrinter;
private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
bool more = gridPrinter.DrawDataGridView(e.Graphics);
if (more == true)
e.HasMorePages = true;
}
//定义一个bool方法
private bool InitializePrinting()
{
PrintDialog printDialog = new PrintDialog();
//printDialog.AllowCurrentPage = true;
//printDialog.AllowPrintToFile = true;
//printDialog.AllowSelection = true;
//printDialog.AllowSomePages = true;
//printDialog.PrintToFile = true;
//printDialog.ShowHelp = true;
//printDialog.ShowNetwork = true;
if (printDialog.ShowDialog() != DialogResult.OK)
return false;
printDocument.DocumentName = "人员基本信息";
printDocument.PrinterSettings = printDialog.PrinterSettings;
printDocument.DefaultPageSettings = printDialog.PrinterSettings.DefaultPageSettings;
printDocument.DefaultPageSettings.Margins = new Margins(40, 40, 40, 40);
gridPrinter = new GridPrinter(dataGridView1, printDocument, true, true, "人员基本信息", new Font("黑体", 18, FontStyle.Bold, GraphicsUnit.Point), Color.Blue, true);
return true;
}
//打印按钮中添加如下代码:
if (InitializePrinting())
{
PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
printPreviewDialog.Document = printDocument;
printPreviewDialog.ShowDialog();
}
//运行效果如图所示:
点确定按钮后如图所示:
//公用打印类
using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Printing;
using System.Data;
using System.Windows.Forms;
public class GridPrinter
{
// the grid to print
private DataGridView dataGridView;
// the PrintDocument
private PrintDocument printDocument;
// center printout?
private bool centerOnPage;
// has a title?
private bool hasTitle;
// title
private string title;
// font
private Font titleFont;
// title color
private Color titleColor;
// use paging?
private bool paging;
// row printing
static int currentRow;
// page printing
static int pageNumber;
// page width
private int pageWidth;
// page height
private int pageHeight;
// left margin
private int leftMargin;
// top margin
private int topMargin;
// right margin
private int rightMargin;
// bottom margin
private int bottomMargin;
// y location placeholder
private float currentY;
// grid sizes
pr