C#打印字符串内容,例如打印Textbox内容
/// <summary> /// 打印txt文档 /// </summary> class PrintTxt { System.Drawing.Printing.PrintDocument printDocument = new System.Drawing.Printing.PrintDocument(); int linesText = 0;//内容行数 int linesPerPage = 0;//一页的行数 int currentPage = 0;//当前页 int pageCount = 0;//多少页 string[] lines;//存储内容 int icount = 0;//行数 string textString = ""; public PrintTxt(string txt) { textString = txt;//给内容进行赋值 printDocument.PrintPage += PrintDocument_PrintPage; printDocument.BeginPrint += PrintDocument_BeginPrint; } private void PrintDocument_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e) { StringReader s1 = new StringReader(textString); string s = s1.ReadToEnd(); lines = s.Split(new string[] { "\n" }, StringSplitOptions.None); } private void PrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { System.Drawing.Graphics g = e.Graphics; //获得绘图对象 float yPosition = 0; //绘制字符串的纵向位置 float xPosition = 0; float leftMargin = e.MarginBounds.Left; //左边距 float topMargin = e.MarginBounds.Top; //上边距 linesText = lines.Count(); System.Drawing.Font printFont = new System.Drawing.Font("宋体", 10); //当前的打印字体 System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);//刷子 linesPerPage = (int)(e.MarginBounds.Height / printFont.GetHeight(g));//每页可打印的行数 pageCount = linesText % linesPerPage == 0 ? (linesText / linesPerPage) : (linesText / linesPerPage + 1); for (int i = 0; i < linesPerPage; i++) { yPosition = topMargin + (i * printFont.GetHeight(g)) - 30; xPosition = leftMargin + (printFont.GetHeight(g)) + 5; if (icount == linesText) { return; } g.DrawString(lines[icount], printFont, myBrush, xPosition, yPosition, new System.Drawing.StringFormat()); icount++; } currentPage++; if (currentPage < pageCount) { e.HasMorePages = true; } else { e.HasMorePages = false; } } public void StartPrintTxt() { printDocument.Print(); } }
打印的过程大致就是将Textbox里的内容获取行数,然后计算一页打印多少行,然后总共打印多少页
作者:眾尋
出处:https://www.cnblogs.com/ZXdeveloper/p/9686386.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
2016-09-21 带搜索的ComboBox