using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;
using System.IO;
namespace XXX
{
/// <summary>
/// 实现DataGridView的打印
/// </summary>
public class PrintDataGridView
{
private static List<DataGridViewCellPrint> CellPrintList = new List<DataGridViewCellPrint>();
private static int printRowCount = 0;
private static bool IsPrint = true;
private static bool IsRole = true;
private static int PoXTmp = 0;
private static int PoYTmp = 0;
private static int WidthTmp = 0;
private static int HeightTmp = 0;
private static int RowIndex = 0;
/// <summary>
/// 打印DataGridView控件
/// </summary>
/// <param name="dataGridView">DataGridView控件</param>
/// <param name="includeColumnText">是否包括列标题</param>
/// <param name="e">为 System.Drawing.Printing.PrintDocument.PrintPage 事件提供数据。</param>
/// <param name="PoX">起始X坐标</param>
/// <param name="PoY">起始Y坐标</param>
public static void Print(DataGridView dataGridView, bool includeColumnText, PrintPageEventArgs e, ref int PoX, ref int PoY)
{
try
{
if (PrintDataGridView.IsPrint)
{
PrintDataGridView.printRowCount = 0;
PrintDataGridView.IsPrint = false;
PrintDataGridView.DataGridViewCellVsList(dataGridView, includeColumnText);
if (0 == PrintDataGridView.CellPrintList.Count)
return;
if (PoX > e.MarginBounds.Left)
PrintDataGridView.IsRole = true;
else
PrintDataGridView.IsRole = false;
PrintDataGridView.PoXTmp = PoX;
PrintDataGridView.PoYTmp = PoY;
PrintDataGridView.RowIndex = 0;
WidthTmp = 0;
HeightTmp = 0;
}
if (0 != PrintDataGridView.printRowCount)
{