本文转自:https://blog.csdn.net/lyflcear/article/details/22795053

昨天公司要打单子而不是以前的手写

为了实现这样的功能上网搜索了一下

http://blog.csdn.net/fwj380891124/article/details/8071801

这篇文章来入门,不过发现无法实现套打功能,把所有的信息都打出来了

对代码进行了一定的调整,并且可以预览,去除了预览页面的打印功能

下面是我写的程序

1.      新建立一个WINFORM项目

2.      添加一个panel 做为要打印的内容展示,背景设置为上面的图片

3.      增加printDocument1,printDialog1,printPreviewDialog1,pageSetupDialog1  Document设置为

4.      增加三个按钮,及几个textbox

  1. private voidbutton1_Click(object sender, EventArgs e)
  2. {
  3. this.pageSetupDialog1.ShowDialog();
  4. }
  5. privatevoid button2_Click(objectsender,EventArgs e)
  6. {
  7. //注意指定其Document(获取或设置要预览的文档)属性
  8. this.printPreviewDialog1.Document=this.printDocument1;
  9. //ShowDialog方法:将窗体显示为模式对话框,并将当前活动窗口设置为它的所有者
  10. this.printPreviewDialog1.PrintPreviewControl.Zoom= 1.0;
  11. //将打印按钮重新设置
  12. ToolStriptool = this.printPreviewDialog1.Controls["toolStrip1"]asToolStrip;
  13. if(tool != null)
  14. {
  15. intindexPrint = tool.Items.IndexOfKey("printToolStripButton");
  16. if(indexPrint != -1)
  17. {
  18. tool.Items[indexPrint].Visible = false;
  19. }
  20. }
  21. this.printPreviewDialog1.ShowDialog();
  22. }
  23. privatevoid button3_Click(objectsender,EventArgs e)
  24. {
  25. PrintDialogpdia = new PrintDialog();
  26. PrintDocumentpdoc =newPrintDocument();
  27. pdoc.PrintPage += newPrintPageEventHandler(printDocument_PrintPage);
  28. if(pdia.ShowDialog() ==DialogResult.OK)
  29. {
  30. pdoc.Print();
  31. }
  32. }
  33. privatevoid printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
  34. {
  35. Fontfont = new Font("宋体", 12);
  36. Brushbru = Brushes.Black;
  37. Imagebitmap = new Bitmap(panel1.BackgroundImage.Width,panel1.BackgroundImage.Height);
  38. Graphicsg = e.Graphics;  //先建立画布
  39. g.DrawImage(bitmap, 0, 0);
  40. intx = 0;//调整位置信息
  41. inty = 0;
  42. foreach(Control iteminpanel1.Controls)
  43. {
  44. if(item is TextBox)
  45. {
  46. Controltx = (itemasControl);
  47. g.DrawString(tx.Text,font,bru, tx.Left + x, tx.Top + y);
  48. }
  49. }
  50. }
  51. privatevoid printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
  52. {
  53. Fontfont = new Font("宋体", 12);
  54. Brushbru = Brushes.Black;
  55. Graphicsg = e.Graphics;  //先建立画布
  56. intx = 0;
  57. inty = 0;
  58. g.DrawImage(panel1.BackgroundImage,0, 0);
  59. foreach(Control iteminpanel1.Controls)
  60. {
  61. if(item is TextBox)
  62. {
  63. Controltx = (itemasControl);
  64. g.DrawString(tx.Text, font,bru, tx.Left + x, tx.Top + y);
  65. }
  66. }
  67. }

为了方便大家改写可去下载项目文件及源代码

[转]单据套打WINFORM实现,带预览功能的更多相关文章

  1. 上传图片带预览功能兼容IE和火狐等主流浏览器

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. JAVA图片批量上传JS-带预览功能

    这篇文章就简单的介绍一个很好用的文件上传工具,批量带预览功能.直接贴代码吧,都有注释,很好理解. HTML页面 <!DOCTYPE html> <%@ taglib prefix=& ...

  3. 可拖拽和带预览图的jQuery文件上传插件ssi-uploader

    插件描述:ssi-uploader是一款带预览图并且可以拖拽文件的jQuery ajax文件上传插件.该文件上传插件支持AJAX,支持多文件上传,可控制上的文件格式和文件大小,提供各种回调函数,使用非 ...

  4. JAVA打印类(带预览)

    package tool; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; ...

  5. FileUpload控件实现单按钮图片自动上传并带预览显示

    FileUpload控件实现单按钮图片自动上传并带预览显示 1.实现原理:   FileUpload控件默认不支持服务端的ONCHANGE事件,此时用一种变通的方法借用客户端的onchange事件,调 ...

  6. Asp.net实现同页面内多图片自动上传并带预览显示

    FileUpload控件实现单按钮图片自动上传并带预览显示 1.实现原理: 此方法适合针对有后台生成的图片相关内容,例如购物网站商品展示页面中的封面图片,图片的数量由后台访问数据库,并加载到页面.这种 ...

  7. 为Dynamics CRM注释的图片附件做个预览功能

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复163或者20151017可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! Dynamics CRM中注释可 ...

  8. Java实现office文档与pdf文档的在线预览功能

    最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...

  9. 分离与继承的思想实现图片上传后的预览功能:ImageUploadView

    本文要介绍的是网页中常见的图片上传后直接在页面生成小图预览的实现思路,考虑到该功能有一定的适用性,于是把相关的逻辑封装成了一个ImageUploadView组件,实际使用效果可查看下一段的git效果图 ...

随机推荐

  1. sentiwordnet的简单使用

    # Example line: # POS     ID     PosS  NegS SynsetTerm#sentimentscore    Desc # a   00009618  0.5    ...

  2. 静态工厂 + DbHelper

    在 .NET 的学习过程中用过三种数据库:Sql Server.Access.SQLite.Sql Server 用得相对多一点点,但是,麻烦,每次用它都需要开服务,而且还费资源,更麻烦的是拷贝到一台 ...

  3. cad.net之ACAD移植到GCAD的自动加载问题

    将acad.pgp,lsp,fas,vlx,名称增加一份gcad.pgp,lsp,fas,vlx.涉及系统加载用. Lisp的拖拉加载在gcad无法通过lastprompt获取命令历史栏最后一行(含路 ...

  4. Android常用布局属性解析 -- Layout_weight

    Layout_weight是Android开发中一个比较常用的布局属性,在面试中也经常被问到.下面通过实例彻底搞懂Layout_weight的用法. 先看下面的布局代码: <?xml versi ...

  5. VS2013 生成事件,删除不必要的DLL

    解决方案中有一个 Project 是 Windows Service,用来从消息队列中取出事件,发送通知电邮: UI是一个MVC网站,两个Project都引用了同一个类库,这个类库引用了第三方的生成P ...

  6. java后端导入excel将数据写入数据库

    参考:https://www.cnblogs.com/hanfeihanfei/p/7079210.html @RequestMapping("/importExcel.do") ...

  7. Shell - 简明Shell入门12 - 定制输出(ColorOutput)

    示例脚本及注释 #!/bin/bash echo -e "\033[32m" # 设置输出属性,绿色字体 echo "This is a test!" echo ...

  8. centos7 升级GCC版本到7.3.0

    废话不多说,直接上shell,还是比较简单的.就是编译时间有点长... 都是以小时计的......,我刀片机上面一台虚拟机反正是等了3个小时 #必备组件安装 yum install -y gcc gc ...

  9. mysql添加类似oracle的伪列及查看表信息

    sql格式: AS rownum, table_name.* ) r, table_name; AS rownum, table_name.字段1, table_name.字段2, table_nam ...

  10. Parallel Gradient Boosting Decision Trees

    本文转载自:链接 Highlights Three different methods for parallel gradient boosting decision trees. My algori ...