700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Winform 实现DataGridView自定义多维表头打印+自定义列宽+一维表头自定义换行

Winform 实现DataGridView自定义多维表头打印+自定义列宽+一维表头自定义换行

时间:2019-07-21 08:20:18

相关推荐

Winform 实现DataGridView自定义多维表头打印+自定义列宽+一维表头自定义换行

哈哈,小弟不才,在前辈大牛的基础上做了多维表头打印,代码粗糙,凑合用,有时间再做优化!

public class PrintClass{#region 全局变量private Dictionary<int, List<MoreHead>> dicMoreHead = new Dictionary<int, List<MoreHead>>();private Dictionary<int, int> dicCelWidth;private string wLineStr = "\n";private DataGridView datagrid;private PrintDocument printdocument;private PageSetupDialog pagesetupdialog;private PrintPreviewDialog printpreviewdialog;private string title = "";//标题private string sPrintTime = "";//打印时间int currentpageindex = 0;//当前页的编号int rowcount = 0;//数据的行数int pagecount = 0;//打印页数int titlesize = 16;//标题的大小int xoffset = 0;//标题位置public int x = 0;//z绘画时的x轴位置public int PrintPageHeight = 1169;//打印的默认高度public int PrintPageWidth = 827;//打印的默认宽度public bool iseverypageprinttitle = false;//是否每一页都要打印标题public int headerheight = 30;//标题高度public int topmargin = 60; //顶边距 public int celltopmargin = 6;//单元格顶边距 public int cellleftmargin = 4;//单元格左边距 public int pagerowcount = 7;//每页行数 public int rowgap = 23;//行高 public int colgap = 5;//每列间隔 public int leftmargin = 50;//左边距 public Font titlefont = new Font("arial", 14);//标题字体 public Font font = new Font("arial", 10);//正文字体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 Font headerfont = new Font("arial", 9, FontStyle.Bold);//列名标题字体public Brush brushHeaderFont = new SolidBrush(Color.Black);//列名字体画刷public Brush brushHeaderBack = new SolidBrush(Color.White);//列名背景画刷public Font Cellfont = new Font("arial", 9);//单元格字体public Brush brushCellFont = new SolidBrush(Color.Black);//单元格字体画刷public Brush brushCellBack = new SolidBrush(Color.White);//单元格背景画刷public bool isautopagerowcount = true;//是否自动计算行数public int buttommargin = 80;//底边距 public bool needprintpageindex = true;//是否打印页脚页数 public Color LineColor = Color.Black;//线的颜色public bool LineUP = true;//上边线public bool LineLeft = true;//左边线public bool LineUnit = true;//单元格的线public bool Boundary = false;//下边线public int AlignmentSgin = -1;//对齐方式的标识public int HAlignment = 0;//标题对齐方式public int UAlignment = 0;//单元格对齐方式public int LeftAlignment = 50;//左对齐的边界public int RightAlignment = 50;//右对齐的边界public int CenterAlignment = 0;//居中对齐边界public bool PageAspect = false;//打印的方向public static bool PageScape = false;//打印方向public int PageSheet = 0;/// <summary>/// 自定义列宽/// </summary>public Dictionary<int, int> DicCelWidth { get => dicCelWidth; set => dicCelWidth = value; }/// <summary>/// 自定义多维表头/// </summary>public Dictionary<int, List<MoreHead>> DicMoreHead { get => dicMoreHead; set => dicMoreHead = value; }/// <summary>/// 自定义换行符/// </summary>public string WLineStr { get => wLineStr; set => wLineStr = value; }#endregion#region 打印信息的初始化/// <summary>/// 打印信息的初始化/// </summary>/// <param datagrid="DataGridView">打印数据</param>/// <param title="string">打印标题</param>/// <param titlesize="int">标题大小</param>/// <param PageS="int">纸张大小</param>/// <param lendscape="bool">是否横向打印</param>/// <returns>返回DataSet对象</returns>public PrintClass(DataGridView datagrid, string title, int titlesize, int PageS, bool lendscape){this.title = title;//设置标题的名称this.titlesize = titlesize;//设置标题的大小this.datagrid = datagrid;//获取打印数所据this.PageSheet = PageS;//纸张大小printdocument = new PrintDocument();//实例化PrintDocument类pagesetupdialog = new PageSetupDialog();//实例化PageSetupDialog类pagesetupdialog.Document = printdocument;//获取当前页的设置printpreviewdialog = new PrintPreviewDialog();//实例化PrintPreviewDialog类printpreviewdialog.Document = printdocument;//获取预览文档的信息printpreviewdialog.FormBorderStyle = FormBorderStyle.Fixed3D;//设置窗体的边框样式//横向打印的设置if (PageSheet >= 0){if (lendscape == true){printdocument.DefaultPageSettings.Landscape = lendscape;//横向打印}else{printdocument.DefaultPageSettings.Landscape = lendscape;//纵向打印}}pagesetupdialog.Document = printdocument;//MessageBox.Show(printdocument.DefaultPageSettings.Landscape.ToString());printdocument.PrintPage += new PrintPageEventHandler(this.printdocument_printpage);//事件的重载}/// <summary>/// 重载实例化打印类/// </summary>/// <param name="datagrid"></param>/// <param name="title"></param>/// <param name="sPrinterName"></param>/// <param name="lendscape"></param>public PrintClass(DataGridView datagrid, s

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。