本文转自: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. 笔记1:jmeter性能测试使用示例(原文:http://blog.csdn.net/zhongweijian/article/details/7619319)

    jmeter是一个简单开源的纯java的性能测试工具.今天学习了jmeter使用了下jmeter,使用起来非常简单. 如果我们要对163的首页性能进行简单测试,我们可以按照以下步骤进行. 1.在测试计 ...

  2. 设置cxGrid中RichEdit输入内容的格式

    设置cxGrid中RichEdit输入内容的格式 (2013-09-05 23:25:31) 转载▼红鱼儿新浪博客   分类: Delphi 遇到这样的问题,利用cxGrid,将一列定义为RichEd ...

  3. Android-Java-类与对象的关系

    类class 例如:class Student {},很多人把class Student {}称为对象或实体,其实这样并不合理,应该称为描述实体/描述对象: 因为被称为对象或实体的是,new Stud ...

  4. hdu 1.2.5

    #include<cstdio> #include<cstring> int main() { //freopen("input.txt","r& ...

  5. 工作随笔——elasticsearch 6.6.1安装(docker-compose方式)

    docker-compose.yml: version: '2.2' services: es1: image: docker.elastic.co/elasticsearch/elasticsear ...

  6. intellij 快捷键整理

    [常规] Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “!”键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更改的文件 Shift+Click,可以关 ...

  7. 背水一战 Windows 10 (53) - 控件(集合类): ItemsControl 的布局控件 - ItemsStackPanel, ItemsWrapGrid

    [源码下载] 背水一战 Windows 10 (53) - 控件(集合类): ItemsControl 的布局控件 - ItemsStackPanel, ItemsWrapGrid 作者:webabc ...

  8. Android TV 开发(5)

    本文来自网易云社区 作者:孙有军 问题3:TV launcher中没有入口图标 如果需要出现入口图标,你必须要在AndroidManifest中配置action为android.intent.acti ...

  9. hangfire的使用

    1.安装: hangfire包.StackExchange.Redis(abp下的hangfire则安装abp.hangfire) 2.配置 startup文件configuration方法添加以下代 ...

  10. ssh远程登录出现Host key verification failed.解决办法

    今天通过ssh和域名连接主机: IcarusdeMacBook-Pro:~ icarus$ ssh root@icarusyu.me 出现了如下错误: @@@@@@@@@@@@@@@@@@@@@@@@ ...