本文转自: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. hbase首次导入大批次的数据成功!

    本次主要是采用hbase自带的importtsv工具来导入.首先要把数据文件上传到hdfs上,然后导入hbase表格.该导入方式只支持.tsv数据文件的导入. 导入流程: 1.下载数据.我们在本文中将 ...

  2. Class AB与Class D功放

    D类功放   又称之为数字功放,其特点是,工作效率高,体积小. D类功放的结构       第一部分为调制器,最简单的只需用一只运放构成比较器即可完成.把原始音频信号加上一定直流偏置后放在运放的正输入 ...

  3. GDI+配置

    GDI+的配置过程: 一.打开stdafx.h文件,在其中加入: #include "Gdiplus.h" #pragma comment(lib,"Gdiplus.h& ...

  4. winform执行程序报错:已停止工作,windows正在检查该问题的解决方案

    每次运行程序时都会弹出错误框:winform已停止工作,windows正在检查该问题的解决方案 事件查看器错位信息: 错误应用程序名称: TMS_winform.exe,版本: 1.0.0.0,时间戳 ...

  5. 背水一战 Windows 10 (41) - 控件(导航类): Frame

    [源码下载] 背水一战 Windows 10 (41) - 控件(导航类): Frame 作者:webabcd 介绍背水一战 Windows 10 之 控件(导航类) Frame 示例Controls ...

  6. HashSet源码解析

    此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 6.1.对于HashSet需要掌握以下几点 HashSet的创建:HashSet() 往HashSet中添加 ...

  7. Java Listener中Spring接口注入的使用

    在项目中使用Spring通常使用他的依赖注入可以很好的处理,接口与实现类之间的耦合性,但是通常的应用场景中都是Service层和DAO层,或者web层的话, 也是与Strust2来整合,那么如何在Li ...

  8. InfluxDB Java入门

    添加依赖 <dependency> <groupId>org.influxdb</groupId> <artifactId>influxdb-java& ...

  9. 最短路变形 poj3615& poj2263

    问题: 牛要跨过一些障碍,希望以最小的体力跨过障碍,并且对于一条路径,只在乎其中最高的障碍. 输入N代表站点数,标记为1—N,输入M代表路径数,从站点S到E之间需要跨过高度为H的障碍. 输入T代表牛要 ...

  10. Ubuntu 14.04TLS Nginx搭建静态文件服务器

    Nginx搭建静态文件服务器 [官方教程]https://www.nginx.com/resources/admin-guide/serving-static-content/ 打开Nginx的配置文 ...