轉(zhuǎn)帖|其它|編輯:郝浩|2010-12-20 15:02:35.000|閱讀 1469 次
概述:對于一個(gè)Silverlight來說,需要打印的內(nèi)容往往可能是整個(gè)網(wǎng)頁的一部頁,或是整個(gè)Silverlight應(yīng)用程序的某個(gè)局部內(nèi)容,如果僅僅使用JavaScript的網(wǎng)頁打印的話,是無法滿足Silverlight應(yīng)用程序中打印的需求,不過這個(gè)問題終于在Silverlight 4.0中得到了比較完美的解決。本文主要介紹如何在Silverlight 4.0中完美地打印報(bào)表和圖形。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在Silverlight4之前我們通常可以用在Silverlight中CALL一下JavaScript腳本來進(jìn)行基于普通網(wǎng)頁的打印方法,但是這種無論是打印方式效果還是精確度控制上都不能讓人十分滿意。
對于一個(gè)Silverlight來說,需要打印的內(nèi)容往往可能是整個(gè)網(wǎng)頁的一部頁,或是整個(gè)Silverlight應(yīng)用程序的某個(gè)局部內(nèi)容,如果僅僅使用JavaScript的網(wǎng)頁打印的話,是無法滿足Silverlight應(yīng)用程序中打印的需求,不過這個(gè)問題終于在Silverlight 4.0中得到了比較完美的解決。Silverlight 4運(yùn)行時(shí)中引入了System.Windows.Printing命名空間,這個(gè)命名空間中包含一個(gè)名為PrintDocument的類,它可以完成Silverlight應(yīng)用程序中有"針對性"的打印任務(wù)。
下面我們用GRID制作一個(gè)簡單的報(bào)表。
如圖所示:
C#:
1 public PrintSample()
2 {
3 InitializeComponent();
4 this.Loaded += new RoutedEventHandler(PrintSample_Loaded);
5 }
6
7 void PrintSample_Loaded(object sender, RoutedEventArgs e)
8 {
9 //創(chuàng)建打印文檔對象
10 pd = new System.Windows.Printing.PrintDocument();
11 //創(chuàng)建打印事件,用于指定打印的文檔對象作用的對象
12 pd.PrintPage += new EventHandler(pd_PrintPage);
13 }
14
15 void pd_PrintPage(object sender, System.Windows.Printing.PrintPageEventArgs e)
16 {
17 //指定打印文檔對象的頁面
18 e.PageVisual = reportGrid;
19 }
20 private System.Windows.Printing.PrintDocument pd;
21 private void btnPrint_Click(object sender, RoutedEventArgs e)
22 {
23 //定義打印的文檔名稱
24 pd.DocumentName = "產(chǎn)品報(bào)表";
25 //調(diào)用打印方法,開始打印
26 pd.Print();
27 }
運(yùn)行結(jié)果如圖所示:
使用后臺(tái)代碼來實(shí)現(xiàn)打印方法,主要依靠System.Windows.Printing.PrintDocument這個(gè)類來完成,PrintDocument具有PrintPage事件,你需要?jiǎng)?chuàng)建這個(gè)事件的事件處理方法,并在這個(gè)事件里指定打印文檔的對象頁面,在這里就是reportGrid的GRID控件,其中DocumentName是你要打印文檔的名稱,最終調(diào)用Print方法開始打印,并顯示打印窗口,如果你沒有安裝打印機(jī),系統(tǒng)會(huì)提示你先安裝打印機(jī),如圖所示:
PrintPage事件中具有StartPrint、EndPrint事件和HasMorePages屬性,StartPrint和EndPrint事件是在打印開始前和打印結(jié)束后引發(fā),而HasMorePages屬性是一個(gè)bool類型的屬性,當(dāng)PrintPage事件多次運(yùn)行時(shí),如果值為true情況下,事件將等待至HasMorePages為false時(shí)才繼續(xù)引發(fā)下一次事件。這里需要說明的是,PrintDocument不僅支持GRID對象,連Image對象也可以通過PrintDocument打印出來。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)