多功能DataGrid打印类(WinForm C#)

这个博客介绍了如何使用C#实现一个多功能的DataGrid打印类,支持自定义字体、边距、行高、页脚显示页数等功能,并提供自动计算每页行数的选项。类中包含多种属性用于设置打印样式,如标题大小、页脚字体等,同时也支持自定义列头和上下行文字。
摘要由CSDN通过智能技术生成

多功能打印

能实现如上图的的打印功能。

·所有字体,边距,header 高,行高,都可以自定义。

·支持自动计算每页行数与每页固定行数。

·支持页脚显示页数。

 

由于自己用和本人比较懒,所以把属性都设置成公有,赋值的时候小心。

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Printing;
using System.Data;

using System.Windows.Forms;

namespace cjManager
{
 public class cutePrinter
 {
  private DataGrid dataGrid;
  private PrintDocument printDocument;
  private PageSetupDialog pageSetupDialog;
  private PrintPreviewDialog printPreviewDialog;

  private string title="";
  
  int currentPageIndex=0;
  int rowCount=0;
  int pageCount=0;

  int titleSize=16;
  bool isCustomHeader=false;
  
  //Brush alertBrush=new SolidBrush(Color.Red);

  string[] header=null;//如果自定义就填入字符串,如果需要斜线分隔,就用/表示,例如:个数#名字 其中#为splitChar
  string[] uplineHeader=null;//上行文字数组
  int[] upLineHeaderIndex=null;//上行的文字index,如果没有上行就设为-1;
  //bool isEveryPagePrintHead=true;//是否每一页都要打印列头。


  public bool isEveryPagePrintTitle=false;//是否每一页都要打印标题。
  public int headerHeight=50;//标题高度。
  public int topMargin=60; //顶边距 
  public int cellTopMargin=6;//单元格顶边距
  public int cellLeftMargin=4;//单元格左边距
  public char splitChar='#';//当header要用斜线表示的时候
  public string falseStr="×";//如果传进来的dataGrid中有 false,把其转换得字符。
  public string trueStr="√";//如果传进来的dataGrid中有 true,把其转换得字符。
  public int pageRowCount=7;//每页行数
  public int rowGap = 30;//行高
  public int colGap = 5;//每列间隔
  public int leftMargin = 50;//左边距
  public Font titleFont=new Font("Arial",14);//标题字体
  public Font font = new Font("Arial", 10);//正文字体
  public Font headerFont = new Font("Arial", 9, FontStyle.Bold);//列名标题
  public Font footerFont=new Font("Arial",8);//页脚显示页数的字体
  public Font upLineFont=new Font("Arial",9, FontStyle.Bold);//当header分两行显示的时候,上行显示的字体。
  public Font underLineFont=new Font("Arial",8);//当header分两行显示的时候,下行显示的字体。
  public Brush brush = new SolidBrush(Color.Black);//画刷
  public bool isAutoPageRowCount=true;//是否自动计算行数。
  public int buttomMargin=80;//底边距
  public bool needPrintPageIndex=true;//是否打印页脚页数

  //string filterStr="";

  

 

  public cutePrinter(DataGrid dataGrid,string title,int titleSize)
  {
   this.title=title;
   //this.titleSize=titleSize;


   this.dataGrid = dataGrid;
   printDocument = new PrintDocument();
   printDocument.PrintPage +

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值