网上找来的代码,但是修正了一些问题,特别是在字段超过一张纸宽度时判断不正确的问题感觉导致显示错乱。调用方式如下:
PrintService printService = new PrintService();
if (printService.PrintDataTable(GetDataTable())
MessageBox.Show("打印成功!");
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing.Printing;
using System.Windows.Forms;
using System.IO;
using System.Drawing;
using System.Data;
namespace TaiZhang.Common
{
internal class PrintService
{
public PrintService()
{
}
#region Members //成员
public String printName = String.Empty;
public Font prtTextFont = new Font("Verdana", 10);
public Font prtTitleFont = new Font("宋体", 10);
private String[] titles = new String[0];
public String[] Titles
{
set
{
titles = value as String[];
if (null == titles)
{
titles = new String[0];
}
}
get
{
return titles;
}
}
private Int32 left = 20;
private Int32 top = 20;
public Int32 Top { set { top = value; } get { return top; } }
public Int32 Left { set { left = value; } get { return left; } }
private DataTable printedTable;
private Int32 pheight;
private Int32 pWidth;
private Int32 pindex;
private Int32 curdgi;
private Int32[] width;
private Int32 rowOfDownDistance = 3;
private Int32 rowOfUpDistance = 2;
Int32 startColumnControls = 0;
Int32 endColumnControls = 0;
bool iMoreRow = false;//是否为超出的行
bool iMoreColumn = false;//是否为超出的列
#endregion
#region Method for PrintDataTable //打印数据集
/// <summary>
/// 打印数据集(无用)
/// </sum