我個(gè)人認(rèn)為,開(kāi)發(fā)MIS,首先就得解決網(wǎng)格的問(wèn)題,而開(kāi)發(fā)工具為我們提供了如DataGrid、MSHFlexGrid的控件。其次,是打印的問(wèn)題,將業(yè)務(wù)單據(jù)與數(shù)據(jù)報(bào)表打印出來(lái)。可想而知,即使一個(gè)業(yè)務(wù)功能非常完美齊全的管理軟件,沒(méi)有打印的支持,也一定不算是一個(gè)完整的軟件。
創(chuàng)新互聯(lián)主營(yíng)天寧網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,App定制開(kāi)發(fā),天寧h5小程序定制開(kāi)發(fā)搭建,天寧網(wǎng)站營(yíng)銷推廣歡迎天寧等地區(qū)企業(yè)咨詢
對(duì)于打印,我們總是在用戶打印之前可以看看打印的效果,這時(shí),一般的軟件都提供了打印預(yù)覽;如果需要調(diào)整打印的效果如紙張的大小、邊距的設(shè)置,又提供了頁(yè)面設(shè)置對(duì)話框讓用戶選擇和調(diào)整;如果系統(tǒng)有多個(gè)打印機(jī),當(dāng)用戶單擊打印按鈕時(shí)還可以選擇輸出的對(duì)象。
總之,對(duì)于打印,我們至少要提供打印頁(yè)面設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽對(duì)話框,讓用戶有更多的機(jī)會(huì)參與交互。這一些,是一個(gè)打印模塊比較重要也比較基本的東西,讓我們一起來(lái)實(shí)現(xiàn)它們吧。
進(jìn)入Vs2003 IDE,從文件菜單上單擊新建項(xiàng)目,項(xiàng)目類型為C#,在模板中選擇類庫(kù),名稱估且叫GoldPrinter,確定即可。在打開(kāi)的開(kāi)發(fā)環(huán)境中,刪除解決方案資源管理器中默認(rèn)生成的Class1.cs。
現(xiàn)在,我們要考慮一下,對(duì)于打印,可能是在Windows下,也可能是Web下。如果將兩者的方法統(tǒng)一起來(lái),讓調(diào)用者不用操心是什么方式下那該多好啊。因此,我們首先設(shè)計(jì)一個(gè)接口,提供兩者共用的方法。
在項(xiàng)目上鼠標(biāo)右鍵單擊后添加一個(gè)新類,名稱為:IPrinterPageSetting,由于是接口,將class改為interface,并去掉構(gòu)造函數(shù)??瓷先?yīng)類似如下:
using System;
namespace GoldPrinter
{
/// <summary>
/// IPrinterPageSetting 的摘要說(shuō)明。
/// </summary>
public class IPrinterPageSetting
{
}
}
方法中至少包含三個(gè)聲明即ShowPageSetupDialog()、ShowPrintSetupDialog()、ShowPrintPreviewDialog(),也就是打開(kāi)打印頁(yè)面設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽對(duì)話框。
Vs2003為我們提供了一個(gè)PrintDocument,名字空間是System.Drawing.Printing。PrintDocument是為打印而提供的一個(gè)類,它的概述(summary)是這樣的:定義一個(gè)可再次使用的對(duì)象,該對(duì)象將輸出發(fā)送到打印機(jī)。
PrintDocument為我們封裝了很多復(fù)雜的細(xì)節(jié),它有一個(gè)至關(guān)重要的事件叫PrintPage,PrintPage的概述是:當(dāng)需要為當(dāng)前頁(yè)打的輸出時(shí)發(fā)生。因此,我們只要引發(fā)了打印事件,把打印的具體輸出的對(duì)象交給PrintPage,別的我們就不用操心了。
那么,我們?cè)趺磳?shí)現(xiàn)具體輸出的過(guò)程呢?由于是封裝,我們也不可能知道最終用戶具體怎么去實(shí)現(xiàn),這時(shí),委托(Delegate)為我們起了大的作用。大家都知道一個(gè)函數(shù)實(shí)現(xiàn)某個(gè)功能的時(shí)候往往需要一些輸入的數(shù)據(jù),但是函數(shù)本身并不知道這些數(shù)據(jù)到底是哪個(gè)具體的值,只知道這個(gè)值的數(shù)據(jù)類型,這時(shí)引入了參數(shù),調(diào)用者調(diào)用函數(shù)據(jù)的時(shí)候傳入相應(yīng)類型的具體值就行了。大家應(yīng)該意識(shí)到了我的用意,與函數(shù)類似,我們?yōu)榇蛴√峁┝岁P(guān)聯(lián)打印機(jī)的方法,但是具體的實(shí)現(xiàn)只有由調(diào)用者去實(shí)現(xiàn),不同之處是函數(shù)傳遞的是參數(shù),而我們要做的委托傳遞的是方法。這時(shí),我們只要為兩者建立對(duì)應(yīng)關(guān)系就可以了,這就是委托。我們需要定義一個(gè)委托,參數(shù)類型與PrintPage的一致就可以了,即(Object obj,System.Drawing.Printing.PrintPageEventArgs ev)。
由此可見(jiàn),我們需要做下面的一些事情:
1、在項(xiàng)目的引用處添加引用,在彈出的對(duì)話框的.NET標(biāo)簽中選擇System.Drawing.dll,
原因是PrintDocument的名字空間是System.Drawing.Printing,在System.Drawing.dll實(shí)現(xiàn);
2、在IPrinterPageSetting接口中增加PrintDocument屬性的聲明;
3、定義委托
4、在IPrinterPageSetting接口中增加PrintPage屬性的聲明,類型為定義的委托;
以下是IPrinterPageSetting接口文件內(nèi)容:
using System;
using System.Drawing;
using System.Drawing.Printing;
namespace GoldPrinter
{
/// <summary>
/// PrintDocument.PrintPage的委托定義
/// </summary>
public delegate void PrintPageDelegate(Object obj,System.Drawing.Printing.PrintPageEventArgs ev) ;
/// <summary>
/// IPrinterPageSetting 的接口,顯示打印紙張?jiān)O(shè)置、打印機(jī)設(shè)置、打印預(yù)覽對(duì)話框。
/// 程序提供:周方勇;Email:flygoldfish@sina.com。
/// </summary>
public interface IPrinterPageSetting
{
/// <summary>
/// 獲取或設(shè)置打印文檔
/// </summary>
System.Drawing.Printing.PrintDocument PrintDocument
{
get;
set;
}
/// <summary>
/// 關(guān)聯(lián)一個(gè)方法,目的是讓具體的打印由實(shí)例化者來(lái)操作
/// 如PrinterPageSetting1.PrintPage += new PrintPageDelegate(this.PrintPageEventHandler);
/// </summary>
PrintPageDelegate PrintPage
{
get;
set;
}
/// <summary>
/// 顯示頁(yè)面設(shè)置對(duì)話框,并返回PageSettings
/// </summary>
/// <returns></returns>
System.Drawing.Printing.PageSettings ShowPageSetupDialog();
/// <summary>
/// 顯示打印機(jī)設(shè)置對(duì)話框,并返回PrinterSettings
/// </summary>
/// <returns></returns>
System.Drawing.Printing.PrinterSettings ShowPrintSetupDialog();
/// <summary>
/// 顯示打印預(yù)覽對(duì)話框
/// </summary>
void ShowPrintPreviewDialog();
}//End Interface
}//End NameSpace
下面,我們以Windows下的編程方式實(shí)現(xiàn),同時(shí)也列Web編程下的框架。由于是Windows下的編程,我們可能用到對(duì)話框什么的作為錯(cuò)誤提示,因此,我們同理要加入System.Windows.Forms.dll引用。再建立一個(gè)類文件,名稱為WinPrinterPageSetting。進(jìn)入文件后,在類聲明后面加上:IPrinterPageSetting,實(shí)現(xiàn)接口功能。程序清單如下,程序中有很多注釋,這里不再多說(shuō)。
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace GoldPrinter
{
/// <summary>
/// WinForm下的打印紙張?jiān)O(shè)置、打印機(jī)設(shè)置、打印預(yù)覽對(duì)話框。
/// </summary>
public class WinPrinterPageSetting:IPrinterPageSetting
{
//把PrintPage委托聲明為類的一個(gè)成員變量
private PrintPageDelegate _printPage;
// 打印文檔
private PrintDocument _printDocument;
#region 構(gòu)造函數(shù)
public WinPrinterPageSetting():this(null)
{
}
/// <summary>
/// 使用printDocument來(lái)初始化類的新實(shí)例,當(dāng)printDocument為null時(shí)自動(dòng)創(chuàng)建一個(gè)printDocument的實(shí)例
/// </summary>
/// <param name="printDocument"></param>
public WinPrinterPageSetting(PrintDocument printDocument)
{
if (printDocument != null)
{
_printDocument = printDocument;
}
else
{
_printDocument = new PrintDocument();
}
}
#endregion
#region IPrinterPageSetting 成員
/// <summary>
/// 獲取或設(shè)置打印文檔
/// </summary>
public PrintDocument PrintDocument
{
get
{
return this._printDocument;
}
set
{
this._printDocument = value;
}
}
/// <summary>
/// 一定要實(shí)例化此類后在調(diào)用打印/預(yù)覽之前設(shè)置此屬性,使之關(guān)聯(lián)一個(gè)方法,目的是讓具體的打印由實(shí)例化者來(lái)操作
/// 如PrinterPageSetting1.PrintPage += new PrintPageDelegate(this.PrintPageEventHandler);
/// </summary>
public PrintPageDelegate PrintPage
{
set
{
//初始委托變量,關(guān)聯(lián)方法
_printPage = value;
if (_printDocument==null)
{
throw new Exception("關(guān)聯(lián)的打印文檔不能為空!");
}
_printDocument.PrintPage +=new System.Drawing.Printing.PrintPageEventHandler(this._printPage);
}
get
{
return _printPage;
}
}
/// <summary>
/// 顯示頁(yè)面設(shè)置對(duì)話框,并返回PageSettings
/// </summary>
/// <returns></returns>
public PageSettings ShowPageSetupDialog()
{
return ShowPageSetupDialog(this._printDocument);
}
/// <summary>
/// 顯示打印機(jī)設(shè)置對(duì)話框,并返回PrinterSettings
/// </summary>
/// <returns></returns>
public PrinterSettings ShowPrintSetupDialog()
{
return ShowPrintSetupDialog(this._printDocument);
}
/// <summary>
/// 顯示打印預(yù)覽對(duì)話框
/// </summary>
public void ShowPrintPreviewDialog()
{
ShowPrintPreviewDialog(this._printDocument);
}
#endregion
//***************注意:以下幾個(gè)對(duì)話框方法可以獨(dú)立使用***************
#region 頁(yè)面設(shè)置對(duì)話框 protected virtual PageSettings ShowPageSetupDialog(PrintDocument printDocument)
/// <summary>
/// 頁(yè)面設(shè)置對(duì)話框,可以獨(dú)立使用
/// </summary>
/// <param name="printDocument"></param>
/// <returns></returns>
/// <remarks>
/// 作 者:周方勇
/// 修改日期:2004-08-07
/// </remarks>
protected virtual PageSettings ShowPageSetupDialog(PrintDocument printDocument)
{
//聲明返回值的PageSettings
PageSettings ps = new PageSettings();
if (printDocument==null)
{
throw new Exception("關(guān)聯(lián)的打印文檔不能為空!");
}
try
{
//申明并實(shí)例化PageSetupDialog
PageSetupDialog psDlg = new PageSetupDialog();
//相關(guān)文檔及文檔頁(yè)面默認(rèn)設(shè)置
psDlg.Document = printDocument;
psDlg.PageSettings = printDocument.DefaultPageSettings;
//顯示對(duì)話框
DialogResult result = psDlg.ShowDialog();
if (result == DialogResult.OK)
{
ps = psDlg.PageSettings;
printDocument.DefaultPageSettings = psDlg.PageSettings;
}
}
catch(System.Drawing.Printing.InvalidPrinterException e)
{
MessageBox.Show("未安裝打印機(jī),請(qǐng)進(jìn)入系統(tǒng)控制面版添加打印機(jī)!","打印",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message,"打印",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
return ps;
}
#endregion
#region 打印設(shè)置對(duì)話框 protected virtual PrinterSettings ShowPrintSetupDialog(PrintDocument printDocument)
/// <summary>
/// 打印設(shè)置對(duì)話框,可以獨(dú)立使用
/// </summary>
/// <param name="printDocument"></param>
/// <returns></returns>
/// <remarks>
/// 作 者:周方勇
/// 修改日期:2004-08-07
/// </remarks>
protected virtual PrinterSettings ShowPrintSetupDialog(PrintDocument printDocument)
{
//聲明返回值的PrinterSettings
PrinterSettings ps = new PrinterSettings();
if (printDocument==null)
{
throw new Exception("關(guān)聯(lián)的打印文檔不能為空!");
}
try
{
//申明并實(shí)例化PrintDialog
PrintDialog pDlg = new PrintDialog();
//可以選定頁(yè)
pDlg.AllowSomePages = true;
//指定打印文檔
pDlg.Document = printDocument;
//顯示對(duì)話框
DialogResult result = pDlg.ShowDialog();
if (result == DialogResult.OK)
{
//保存打印設(shè)置
ps = pDlg.PrinterSettings;
//打印
printDocument.Print();
}
}
catch(System.Drawing.Printing.InvalidPrinterException e)
{
MessageBox.Show("未安裝打印機(jī),請(qǐng)進(jìn)入系統(tǒng)控制面版添加打印機(jī)!","打印",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message,"打印",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
return ps;
}
#endregion
#region 打印預(yù)覽對(duì)話框 protected virtual void ShowPrintPreviewDialog(PrintDocument printDocument)
/// <summary>
/// 打印預(yù)覽對(duì)話框,可以獨(dú)立使用
/// </summary>
/// <param name="printDocument"></param>
/// <returns></returns>
/// <remarks>
/// 作 者:周方勇
/// 修改日期:2004-08-07
/// </remarks>
protected virtual void ShowPrintPreviewDialog(PrintDocument printDocument)
{
if (printDocument==null)
{
throw new Exception("關(guān)聯(lián)的打印文檔不能為空!");
}
try
{
//申明并實(shí)例化PrintPreviewDialog
PrintPreviewDialog ppDlg = new PrintPreviewDialog();
//指定打印文檔
ppDlg.Document = printDocument;
//顯示對(duì)話框
DialogResult result = ppDlg.ShowDialog();
if (result == DialogResult.OK)
{
//...
}
}
catch(System.Drawing.Printing.InvalidPrinterException e)
{
MessageBox.Show("未安裝打印機(jī),請(qǐng)進(jìn)入系統(tǒng)控制面版添加打印機(jī)!","打印",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message,"打印",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
#endregion
}//End Class
}//End NameSpace
大家可以看到了#region指定,它與#endregion一起使用,可以把中間的文本折疊起來(lái),很方便,需要查看的時(shí)候就單擊前面的展開(kāi)符號(hào)。后三個(gè)函數(shù)是比較重要的方法,同時(shí)提供它們的重載函數(shù)。ShowPageSetupDialog()與ShowPrintSetupDialog()返回用戶確認(rèn)的當(dāng)前設(shè)置選擇。
再建立一個(gè)類文件,名稱為WebPrinterPageSetting。進(jìn)入文件后,在類聲明后面加上:IPrinterPageSetting,實(shí)現(xiàn)接口功能。程序清單如下:
using System;
namespace GoldPrinter
{
/// <summary>
/// WebForm下的打印紙張?jiān)O(shè)置、打印機(jī)設(shè)置、打印預(yù)覽對(duì)話框。(***暫無(wú)具體實(shí)現(xiàn)***)
/// </summary>
public class WebPrinterPageSetting:IPrinterPageSetting
{
public WebPrinterPageSetting()
{
//
// TODO: 在此處添加構(gòu)造函數(shù)邏輯
//
}
#region IPrinterPageSetting 成員
public System.Drawing.Printing.PrintDocument PrintDocument
{
get
{
// TODO: 添加 WebPrinterPageSetting.PrintDocument getter 實(shí)現(xiàn)
return null;
}
set
{
// TODO: 添加 WebPrinterPageSetting.PrintDocument setter 實(shí)現(xiàn)
}
}
public PrintPageDelegate PrintPage
{
get
{
// TODO: 添加 WebPrinterPageSetting.PrintPage getter 實(shí)現(xiàn)
return null;
}
set
{
// TODO: 添加 WebPrinterPageSetting.PrintPage setter 實(shí)現(xiàn)
}
}
public System.Drawing.Printing.PageSettings ShowPageSetupDialog()
{
// TODO: 添加 WebPrinterPageSetting.ShowPageSetupDialog 實(shí)現(xiàn)
return null;
}
public System.Drawing.Printing.PrinterSettings ShowPrintSetupDialog()
{
// TODO: 添加 WebPrinterPageSetting.ShowPrintSetupDialog 實(shí)現(xiàn)
return null;
}
public void ShowPrintPreviewDialog()
{
// TODO: 添加 WebPrinterPageSetting.ShowPrintPreviewDialog 實(shí)現(xiàn)
}
#endregion
}//End Class
}//End NameSpace
做到了這一步,大家可能說(shuō)已經(jīng)可以了,確實(shí)如此。因?yàn)樵谡{(diào)用的時(shí)候?qū)嵗疻inPrinterPageSetting/WebPrinterPageSetting并調(diào)用它的方法或?qū)傩跃涂梢粤?。大家再想想我為什么要提供IPrinterPageSetting呢?如果我現(xiàn)在調(diào)用打印對(duì)話框,我也不管是Windows下還是Web下的,這時(shí),IPrinterPageSetting就發(fā)揮了作用。
例如:
IPrinterPageSetting _printerPageSetting;
申明了一個(gè)打印接口對(duì)象,以后就可以直接調(diào)用它的方法了,但是到底是Windows模式還是Web模式呢,我們只需要讓程序自己去根據(jù)系統(tǒng)去實(shí)例為真正的WinPrinterPageSetting或WebPrinterPageSetting了。如:
//創(chuàng)建接口對(duì)象的新實(shí)例,使其指象真正的實(shí)現(xiàn)其接口的對(duì)象
if (Windows模式)
{
_printerPageSetting = new WinPrinterPageSetting();
}
else if(Web模式)
{
_printerPageSetting = new WebPrinterPageSetting();
}
在接下來(lái)的程序清單中我們可以看到這個(gè)效果。我們?cè)俳⒁粋€(gè)PrinterPageSetting類,將WinPrinterPageSetting與WebPrinterPageSetting合二為一。在類的構(gòu)造函數(shù)中增加自動(dòng)判斷Windows模式還是Web模式,同時(shí)也提供PrintMode屬性可以讓用戶修改。程序清單如下:
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace GoldPrinter
{
/// <summary>
/// 打印方式
/// </summary>
public enum PrintModeFlag
{
/// <summary>
/// Windows窗口打印方式
/// </summary>
Win
,
/// <summary>
/// Web窗口打印方式
/// </summary>
Web
}
/// <summary>
/// 封裝頁(yè)面設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽,適合于Window和Asp.Net。
/// 程序提供:周方勇;Email:flygoldfish@sina.com。
/// </summary>
public class PrinterPageSetting
{
//申明一個(gè)封裝頁(yè)面設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽的接口
private IPrinterPageSetting _printerPageSetting;
//打印方式
private PrintModeFlag _printModeFlag;
public PrintModeFlag PrintMode
{
get
{
return this._printModeFlag;
}
set
{
this._printModeFlag = value;
//運(yùn)用了抽象模式,創(chuàng)建接口對(duì)象的新實(shí)例,使其指象真正的實(shí)現(xiàn)其接口的對(duì)象
if (this._printModeFlag == PrintModeFlag.Win)
{
_printerPageSetting = new WinPrinterPageSetting();
}
else if(this._printModeFlag == PrintModeFlag.Web)
{
_printerPageSetting = new WebPrinterPageSetting();
}
}
}
/// <summary>
/// 獲取或設(shè)置打印文檔
/// </summary>
public PrintDocument PrintDocument
{
get
{
return _printerPageSetting.PrintDocument;
}
set
{
_printerPageSetting.PrintDocument = value;
}
}
/// <summary>
/// 一定要實(shí)例化此類后在調(diào)用打印/預(yù)覽初始此變量,使之關(guān)聯(lián)一個(gè)方法,目的是讓具體的打印由實(shí)例化者來(lái)操作
/// 如PrinterPageSetting1.PrintPage += new PrintPageDelegate(this.PrintPageEventHandler);
/// </summary>
public PrintPageDelegate PrintPage
{
set
{
_printerPageSetting.PrintPage = value;
}
get
{
return _printerPageSetting.PrintPage;
}
}
#region 構(gòu)造函數(shù)
/// <summary>
/// 封裝頁(yè)面設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽,適合于Window和Asp.Net,Web方式下請(qǐng)?jiān)谂渲梦募性黾渔IPrintMode及值Web,也可以實(shí)例化后設(shè)置PrintMode屬性為PrintModeFlag.Web。
/// </summary>
public PrinterPageSetting():this(null)
{
}
/// <summary>
/// 封裝頁(yè)面設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽,適合于Window和Asp.Net,Web方式下請(qǐng)?jiān)谂渲梦募性黾渔IPrintMode及值Web,也可以實(shí)例化后設(shè)置PrintMode屬性為PrintModeFlag.Web。
/// </summary>
/// <param name="printDocument"></param>
public PrinterPageSetting(PrintDocument printDocument)
{
string strPrintMode = "";
//配置文件中鍵PrintMode
strPrintMode = System.Configuration.ConfigurationSettings.AppSettings["PrintMode"];
if (strPrintMode == null)
{
//默認(rèn)為Win方式
strPrintMode = "Win";
}
//配置文件中鍵PrintMode的值Win/Web
if (strPrintMode.ToUpper() == "WIN")
{
this.PrintMode = PrintModeFlag.Win;
}
else
{
this.PrintMode = PrintModeFlag.Web;
}
/* //配置文件中添加鍵值的寫法
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="PrintMode" value="Web"/>
</appSettings>
</configuration>
*/
_printerPageSetting.PrintDocument = printDocument;
}
#endregion
/// <summary>
/// 顯示頁(yè)面設(shè)置對(duì)話框,并返回PageSettings
/// </summary>
/// <returns></returns>
public PageSettings ShowPageSetupDialog()
{
return _printerPageSetting.ShowPageSetupDialog();
}
/// <summary>
/// 顯示打印機(jī)設(shè)置對(duì)話框,并返回PrinterSettings
/// </summary>
/// <returns></returns>
public PrinterSettings ShowPrintSetupDialog()
{
return _printerPageSetting.ShowPrintSetupDialog();
}
/// <summary>
/// 顯示打印預(yù)覽對(duì)話框
/// </summary>
public void ShowPrintPreviewDialog()
{
_printerPageSetting.ShowPrintPreviewDialog();
}
}//End Class
}//End NameSpace
在這個(gè)類的構(gòu)造函數(shù)中,提到了配置文件。在建立Asp.Net應(yīng)用程序的時(shí)候自動(dòng)會(huì)生成一個(gè)名為WebMIS.Config的文件,文件里有一些環(huán)境和其它信息的設(shè)置,可以簡(jiǎn)單的理解為為程序提供一個(gè)外部設(shè)置的接口,提高應(yīng)用程序的靈活性。在建立Windows應(yīng)用程序的時(shí)候默認(rèn)情況下沒(méi)有這樣的文件,但是可以在項(xiàng)目上單擊鼠標(biāo)右鍵添加新項(xiàng),選擇應(yīng)用程序配置,默認(rèn)的配置文件名為App.config。在構(gòu)造函數(shù)中我們默認(rèn)為Win下的打印,如果是Web方式下,可以在配置文件中增加鍵PrintMode及值Web,也可以實(shí)例化后設(shè)置PrintMode屬性為PrintModeFlag.Web。下面是在配置文件中添加鍵值的寫法
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="PrintMode" value="Web"/>
</appSettings>
</configuration>
至此,關(guān)于NET環(huán)境下有關(guān)打印頁(yè)面設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽對(duì)話框的實(shí)現(xiàn)全部結(jié)束,我們可以將程序編譯成一個(gè)動(dòng)態(tài)庫(kù)了。
文章標(biāo)題:ASP.Net環(huán)境下有關(guān)打印方面的技術(shù)精華
文章網(wǎng)址:http://www.rwnh.cn/article40/pcogho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、微信小程序、響應(yīng)式網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、電子商務(wù)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)