精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C#打印程序實現完整文檔打印功能

開發 后端
在Windows應用程序中文檔的打印是一項非常重要的功能,在以前一直是一個非常復雜的工作,.NET Framework的打印功能都以組件的方式提供,為程序員提供了很大的方便,但是這幾個組件的使用還是很復雜的,有必要解釋一下用C#打印程序實現完整文檔打印功能。

C#打印程序實現完整文檔打印功能,我們會介紹打印操作具體包括的四個功能,打印所涉及的類的屬性及方法,以及最終實現的樣例。***我們會總結C#打印程序的全部過程。

打印操作通常包括以下四個功能

1 打印設置 設置打印機的一些參數比如更改打印機驅動程序等

2 頁面設置 設置頁面大小紙張類型等

3 打印預覽 類似于word中的打印預覽

4 打印

下面我把我編寫的記事本(全部源代碼可以在http://www.cndot.net中下載)中用到的打印功能的代碼進行解釋希望能給大家一些幫助實現打印功能的核心是PrintDocument類這個類屬于System.Drawing.Printing名字空間這個類封裝了當前的打印設置頁面設置以及所有的與打印有關的事件和方法

這個類包括以下幾個屬性 事件 和方法

1、PrinterSettings 屬性

存放打印機的設置信息這個屬性不需要程序員設置因為它是由打印對話框獲取的

2、PrintCountroller 屬性

控制打印過程

3、DefaultPageSettings 屬性

存放頁面設置信息 打印紙大小方向等也不需要程序員設置因為它是由頁面設置對話框獲取的

4、DocumentName 屬性

指定文檔名稱,出現在打印機狀態窗口中

1。 BeginPrint事件

在打印之前發出

2. PrintPage事件

每打印一頁是發出,事件接受一個PrintPageEventArgs參數該參數封裝了打印相關的信息

PrintPageEventArgs參數有很多重要的屬性

1 Cancel 取消打印

2 Graphics 頁面的繪圖對象

3 HasMorePages 是否還有要打印的頁面

Print 方法 該方法沒有參數 調用它將按照當前設置開始打印若實現打印功能首先構造PrintDocument對象添加打印事件。

  1. PrintDocument printDocument;  
  2. private void InitializeComponent()  
  3. {  
  4. ...  
  5. printDocument=new PrintDocument();  
  6. printDocument.PrintPage += new PrintPageEventHandler (this.printDocument_PrintPage);  
  7. ...  

實現打印事件功能

打印和繪圖類似都是調用Graphics 類的方法進行畫圖 不同的是一個在顯示器上一個在打印紙上并且打印要進行一些復雜的計算如換行 分頁等。

  1. private void printDocument_PrintPage(object sender,PrintPageEventArgs e)  
  2. {  
  3. Graphics g = e.Graphics; //獲得繪圖對象  
  4. float linesPerPage = 0; //頁面的行號  
  5. float yPosition = 0;   //繪制字符串的縱向位置  
  6. int count = 0; //行計數器  
  7. float leftMargin = e.MarginBounds.Left; //左邊距  
  8. float topMargin = e.MarginBounds.Top; //上邊距  
  9. string line = null; 行字符串  
  10. Font printFont = this.textBox.Font; //當前的打印字體  
  11. SolidBrush myBrush = new SolidBrush(Color.Black);//刷子  
  12. linesPerPage = e.MarginBounds.Height / printFont.GetHeight(g);//每頁可打印的行數  
  13. //逐行的循環打印一頁  
  14.     while(count < linesPerPage && ((line=lineReader.ReadLine()) != null))  
  15.     {  
  16.        yPosition = topMargin + (count * printFont.GetHeight(g));  
  17.        g.DrawString(line, printFont, myBrush, leftMargin, yPosition, new StringFormat());  
  18.        count++;  
  19.     } 

如果本頁打印完成而line不為空說明還有沒完成的頁面這將觸發下一次的打印事件在下一次的打印中lineReader會
自動讀取上次沒有打印完的內容因為lineReader是這個打印方法外的類的成員它可以記錄當前讀取的位置
   

  1.  if(line != null)  
  2.         e.HasMorePages = true;  
  3.     else 
  4.         e.HasMorePages = false;   

打印設置,構造打印對話框 將對話框中設置的Document屬性賦給printDocument這樣會將用戶的設置自動保存到printDocument的PrinterSettings屬性中

  1. protected  void FileMenuItem_PrintSet_Click(object sender,EventArgs e)  
  2. {  
  3. PrintDialog printDialog = new PrintDialog();  
  4. printDialog.Document = printDocument;  
  5. printDialog.ShowDialog();  

頁面設置和打印預覽與打印設置原理相同都是構造對話框將用戶在對話框中的設置保存到相應的類的屬性中

  1. protected  void FileMenuItem_PageSet_Click(object sender,EventArgs e)  
  2. {  
  3.   PageSetupDialog pageSetupDialog = new PageSetupDialog();  
  4.   pageSetupDialog.Document = printDocument;  
  5.   pageSetupDialog.ShowDialog();  

C#打印程序打印預覽

  1. protected void FileMenuItem_PrintView_Click(object sender,EventArgs e)  
  2. {  
  3.    PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();  
  4.    printPreviewDialog.Document = printDocument;  
  5.    lineReader = new StringReader(textBox.Text);  
  6.    try 
  7.       {  
  8.     printPreviewDialog.ShowDialog();  
  9.       }  
  10.     catch(Exception excep)  
  11.     {  
  12.     MessageBox.Show(excep.Message, "打印出錯", MessageBoxButtons.OK, MessageBoxIcon.Error);  
  13.     }  

打印就可以直接調用printDocument的Print()方法因為用戶可能在打印之前還要再更改打印設置所以在這里再次顯示打印設置對話框

  1. protected void FileMenuItem_Print_Click(object sender,EventArgs e)  
  2.   {  
  3.    PrintDialog printDialog = new PrintDialog();  
  4.    printDialog.Document = printDocument;  
  5.    lineReader = new StringReader(textBox.Text);  
  6.    if (printDialog.ShowDialog() == DialogResult.OK)  
  7.    {  
  8.     try 
  9.        {  
  10.        printDocument.Print();  
  11.        }  
  12.        catch(Exception excep)  
  13.             {  
  14.               MessageBox.Show(excep.Message, "打印出錯", MessageBoxButtons.OK, MessageBoxIcon.Error);  
  15.               printDocument.PrintController.OnEndPrint(printDocument,new PrintEventArgs());  
  16.             }  
  17.        }  
  18.   } 

C#打印程序總結打印的過程是

1 在應用程序窗體初始化時構造PrintDocument對象  添加 printDocument 的 PrintPage 方法

2 實現PrintPage方法  4 在用戶的單擊事件中調用 printDocument 的 Print方法實現打印功能在這中間可能要用到  PrintDialog PrintPreviewDialog PageSetupDialog 設置和查看打印效果這些方法通常是由菜單的單擊觸發的。

【編輯推薦】

  1. C# GreetPeople方法
  2. C# Hashtable對象分析
  3. 常用C# Arraylist的介紹
  4. C# Observer設計模式
  5. C#交錯數組淺析
責任編輯:彭凡 來源: book.8844.com
相關推薦

2009-08-26 11:32:37

C#打印文檔

2009-08-26 09:22:44

C#實現打印功能

2009-08-26 10:43:14

C#實現打印功能

2009-08-26 09:54:45

C#打印預覽C#打印

2011-05-20 16:07:29

C#

2009-08-26 12:59:08

C#打印設置

2009-08-26 11:07:36

C#打印窗體

2009-08-26 13:41:58

C#打印源碼

2009-08-26 12:14:44

C#打印設置

2009-08-26 14:31:08

C#打印文件

2009-08-26 13:48:31

C#打印條碼

2009-08-26 13:36:33

C#打印控件

2009-08-26 14:48:21

C#打印分頁

2009-09-02 17:29:10

C# TextBox換

2009-08-26 14:03:26

C#打印原理

2009-08-26 11:53:56

C#打印文本文件

2009-09-04 13:55:04

C#文檔自動化

2009-08-12 16:26:30

C#讀取XML文檔

2010-02-01 16:54:18

C++打印地址信息

2011-12-21 14:33:20

HP Envy 110HP Officeje商用噴墨打印機
點贊
收藏

51CTO技術棧公眾號

国产精品第一| 亚洲欧美一区二区三| 国产亚洲欧美日韩在线观看一区二区| 欧美午夜精品伦理| 日韩久久不卡| 国产chinasex对白videos麻豆| 欧美精品入口| 亚洲欧美精品在线| 在线观看免费黄网站| av大大超碰在线| 久久久亚洲精品一区二区三区| 国产美女久久久| 日韩三级免费看| 欧美性感美女一区二区| 亚洲第一精品福利| 国产又粗又长又大的视频| 欧美xxxx做受欧美88bbw| 久久久久国色av免费看影院| 亚洲综合色av| 一区二区视频免费观看| 99热在线精品观看| 久久精品中文字幕免费mv| 国产 中文 字幕 日韩 在线| 久久亚洲国产精品尤物| 五月激情综合婷婷| 粉嫩av一区二区三区天美传媒| 欧美色视频免费| 国产成人av电影在线观看| 国产精品夜色7777狼人| 四虎成人永久免费视频| 午夜精品偷拍| 久久av资源网站| 天天操天天舔天天射| 久久影视三级福利片| 日韩一区二区三区在线观看| 狠狠热免费视频| 自拍网站在线观看| 亚洲成人777| 超碰人人爱人人| 黄色免费在线网站| 国产精品久久久久一区二区三区共| 精品国产一区二区三区免费| www.日日夜夜| 国产一区不卡视频| 国产精品视频内| av手机天堂网| 日韩电影网1区2区| 国产精品久久久久久久久| 免费视频久久久| 久久xxxx精品视频| 国产91在线高潮白浆在线观看| 日本午夜精品理论片a级app发布| 欧美特黄一区| 欧美日韩xxxxx| 全网免费在线播放视频入口| 伊人青青综合网| 久久大大胆人体| 精品国产乱码久久久久久鸭王1| 亚洲成av人电影| 日韩少妇与小伙激情| 懂色av蜜臀av粉嫩av永久| 成人在线国产| 亚洲天堂第二页| 69精品无码成人久久久久久| 国产99久久久国产精品成人免费| 亚洲欧美在线免费观看| 无码人妻精品一区二区中文| 精品国产精品国产偷麻豆| 亚洲精品720p| 亚洲AV无码片久久精品| 不卡中文字幕| 久久躁狠狠躁夜夜爽| 欧美精品99久久久| 亚洲精一区二区三区| 2020国产精品视频| 中文字幕在线天堂| 精品一区中文字幕| 超碰97在线人人| 天天摸夜夜添狠狠添婷婷| 91看片淫黄大片一级| 视频一区三区| a级影片在线| 精品成人乱色一区二区| 福利在线一区二区三区| 99久久999| 亚洲精品成a人在线观看| 精品无码国产污污污免费网站| 久久精品高清| 欧美大片在线影院| 女人十八岁毛片| 免费人成精品欧美精品| 91大片在线观看| 少妇人妻偷人精品一区二区| 欧美韩国日本不卡| 成人短视频在线观看免费| 美女网站在线看| 欧美放荡的少妇| 亚洲一区二区三区综合| 欧美成人激情| 69视频在线播放| 91在线视频国产| 99re视频精品| 9l视频自拍9l视频自拍| 蜜桃av在线| 欧美一区二区三区视频免费 | 亚洲 日韩 国产第一区| 超碰在线网址| 欧美艳星brazzers| 欧美日韩人妻精品一区在线| 日韩欧美高清在线播放| 欧美劲爆第一页| 一本色道久久综合亚洲| 91亚洲国产成人精品一区二区三| 亚洲一卡二卡三卡四卡无卡网站在线看| 男人天堂亚洲| 欧美人妖巨大在线| 亚洲人成人无码网www国产| 国产精品草草| 国产在线播放不卡| 九色在线视频| 午夜免费久久看| 男人女人拔萝卜视频| 成人情趣视频网站| 欧美亚洲免费电影| 亚洲精品久久久久久无码色欲四季 | 日韩在线电影一区| 丰满岳乱妇一区二区| 成人在线免费观看91| 午夜精品视频在线| 99久久99久久久精品棕色圆| 国产欧美一区二区三区在线老狼| 欧美男女爱爱视频| 99这里只有精品视频| 另类图片亚洲另类| 中文字幕码精品视频网站| 久久久亚洲精品石原莉奈| 久久精品国产sm调教网站演员| 国产aⅴ精品一区二区四区| 尤物九九久久国产精品的分类 | 国自产拍偷拍福利精品免费一 | 深夜福利视频在线免费观看| 一区二区三区日韩| 精品人妻一区二区三| 911精品美国片911久久久| 国产精品你懂得| av基地在线| 欧美日韩一区二区三区在线看| 亚洲精品午夜视频| 日韩和欧美的一区| 色999五月色| 国产私拍福利精品视频二区| 亚洲视频一区二区三区| 亚洲中文一区二区| 国产午夜三级一区二区三| 亚洲精品www久久久| 天堂在线一区二区三区| 91精品秘密在线观看| 国产在线视频欧美| 国内精品不卡| 精品国产乱子伦一区| 日本一本高清视频| 2022国产精品视频| 丁香婷婷激情网| 国产精品videosex性欧美| 成人在线一区二区| 中文av资源在线| 欧美精品一区二区久久婷婷| 日本熟妇乱子伦xxxx| 久久久综合网站| 中国黄色片免费看| 亚洲国产日韩欧美在线| 国产精品大全| 不卡av影片| 色婷婷综合成人av| www.国产视频| 色综合久久天天综合网| 亚洲激情图片网| 国产盗摄一区二区三区| 黄网站欧美内射| 欧美理论电影大全| 91pron在线| 国产精品迅雷| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲第一页在线观看| 欧美日韩激情美女| 熟女少妇内射日韩亚洲| 国产精品99久久久久久久女警| 国产人妻777人伦精品hd| 精品国产一区二区三区小蝌蚪| 亚洲精品欧美日韩专区| 蜜桃视频动漫在线播放| 中文字幕欧美国内| 亚洲男人第一天堂| 欧美视频在线一区二区三区 | 国产艳妇疯狂做爰视频| 日精品一区二区| 国产高清不卡无码视频| 免费观看不卡av| 亚洲xxx自由成熟| 久久精品女人天堂av免费观看 | 国产电影一区二区| 97在线日本国产| 日本福利专区在线观看| 亚洲福利视频网站| 国产又粗又长视频| 欧美性猛交xxxx乱大交| 成人免费毛片东京热| 国产欧美一区二区精品婷婷| 深夜视频在线观看| 麻豆视频观看网址久久| xxxx18hd亚洲hd捆绑| 国产精品成人a在线观看| 久久国产精品99久久久久久丝袜| av日韩久久| 日本一区二区在线免费播放| 免费在线国产视频| www.日韩免费| 久久精品色图| 亚洲高清在线观看| 国产区精品在线| 欧美午夜宅男影院| 久久精品无码av| 亚洲国产精品久久不卡毛片| 黄色a级片在线观看| 欧美国产精品专区| 国产又爽又黄无码无遮挡在线观看| 国产乱码精品一区二区三区av | 青青草影院在线观看| 精品香蕉视频| 欧美日韩在线播放一区二区| 成功精品影院| 96久久精品| 国产95亚洲| 成人欧美一区二区三区黑人孕妇 | 男人的天堂av网| 久久先锋影音av| 影音先锋人妻啪啪av资源网站| 国产成人综合网| 69久久精品无码一区二区 | 88av在线播放| 成人一区在线观看| 91蝌蚪视频在线| 激情国产一区二区| 一级做a免费视频| 麻豆免费看一区二区三区| 男女无套免费视频网站动漫| 快she精品国产999| 无码精品国产一区二区三区免费| 亚洲美女91| 97视频在线免费| 日韩午夜电影| 少妇性饥渴无码a区免费| 亚洲一区二区动漫| 欧美v在线观看| 久久精品女人| 国产一二三区av| 久久精品99久久久| 婷婷激情5月天| 国产一区二区91| 国产一精品一aⅴ一免费| 成人午夜电影久久影院| 欧亚乱熟女一区二区在线| 99国产一区二区三精品乱码| a视频免费观看| 国产人久久人人人人爽| 毛片aaaaaa| 中文字幕综合网| 精品少妇theporn| 黑人精品xxx一区一二区| 国产精品美女久久久久av爽| 色一情一乱一乱一91av| 影音先锋国产资源| 欧美一级淫片007| 亚洲精品国偷拍自产在线观看蜜桃| 亚洲国产精品免费| 国产高清视频在线观看| 日韩视频永久免费观看| 国产理论电影在线| 国产精品扒开腿做爽爽爽视频| 亚洲一区有码| 韩国精品一区二区三区六区色诱| 国产亚洲一卡2卡3卡4卡新区| 少妇熟女一区二区| 日韩一级不卡| 亚欧激情乱码久久久久久久久| 国产激情偷乱视频一区二区三区 | 神马香蕉久久| 一区二区在线观看网站| 亚洲午夜精品久久久久久app| 国产精品动漫网站| 国产成人在线视频免费播放| 人妻丰满熟妇aⅴ无码| 国产精品久久福利| 中文字幕在线观看免费视频| 欧美偷拍一区二区| 人人妻人人玩人人澡人人爽| 自拍视频国产精品| 黄色成人在线网| 国产精品一区二区三区在线播放| 在线精品视频一区| 亚洲v国产v| 国产精品久久久一区二区| 五月天开心婷婷| 久久精品日产第一区二区三区高清版| 天天看片中文字幕| 91高清视频在线| 秋霞网一区二区| 久久精品国产亚洲精品2020| 樱桃视频成人在线观看| 国产不卡一区二区三区在线观看| 成人精品中文字幕| 日本少妇高潮喷水视频| 国产精品亚洲视频| 国产又粗又猛又爽又黄的视频四季| 亚洲第一精品在线| 国产wwwxxx| 色妞久久福利网| 亚洲日本网址| 久久久影院一区二区三区| 欧美国产三区| 日韩欧美国产小视频| 国产精品人人人人| 精品久久久久香蕉网| 国产91在线视频蝌蚪| 国产精品成人v| 天堂日韩电影| 国产真人做爰毛片视频直播| 国产精品综合在线视频| 懂色av蜜臀av粉嫩av永久| 色老汉av一区二区三区| 青青草视频在线免费观看| 韩国欧美亚洲国产| 日韩高清二区| 看一级黄色录像| 久久国产精品区| 手机看片国产日韩| 欧美在线视频全部完| 精品美女视频在线观看免费软件 | 日韩精品一区二区三区色偷偷| 一本久久综合| 亚洲av成人片无码| 亚洲综合一二区| 亚洲精品一区二区三区蜜桃| 欧美成人免费全部| 亚洲电影一区| www.国产在线播放| 成人av在线资源网站| 国产成人一区二区三区影院在线| 精品国产一区二区三区忘忧草| 欧美人与牲禽动交com| 国产成人亚洲欧美| 雨宫琴音一区二区在线| 捆绑裸体绳奴bdsm亚洲| 精品国产电影一区| 青青久在线视频免费观看| 国产成人免费av电影| 精品大片一区二区| 久久黄色片网站| 亚洲精品成人天堂一二三| 亚洲av无码国产精品永久一区| 欧美激情在线观看视频| 精品资源在线| av无码精品一区二区三区| 欧美激情一区二区三区| 国产情侣av在线| 国模gogo一区二区大胆私拍 | 亚洲不卡在线视频| 一本一道久久a久久精品逆3p| 电影亚洲一区| 久久久久久久久网| 99久久伊人精品| 欧美另类高清videos的特点| www日韩欧美| 亚洲国产欧美国产第一区| 欧美黑人经典片免费观看| 国产亚洲一本大道中文在线| 国产又粗又猛又爽又黄视频| 久久久亚洲精品视频| 国内精品视频在线观看| 无人码人妻一区二区三区免费| 亚洲国产成人av好男人在线观看| 男人久久精品| 亚洲影院色无极综合| 国产婷婷精品| 黑人操日本美女| 日韩激情第一页| 四虎精品一区二区免费| www.射射射| 国产精品美女久久久久高潮| 丁香六月天婷婷| 国产精品无av码在线观看| 国产精品激情| 99精品全国免费观看| 精品国产免费一区二区三区香蕉| 九九热线视频只有这里最精品| 国产卡一卡二在线| 久久久久久夜精品精品免费| 99视频在线观看免费| 国产精品国模在线| 激情欧美国产欧美|