欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

ASP.Net環(huán)境下有關(guān)打印方面的技術(shù)精華

我個人認(rèn)為,開發(fā)MIS,首先就得解決網(wǎng)格的問題,而開發(fā)工具為我們提供了如DataGrid、MSHFlexGrid的控件。其次,是打印的問題,將業(yè)務(wù)單據(jù)與數(shù)據(jù)報表打印出來??上攵?,即使一個業(yè)務(wù)功能非常完美齊全的管理軟件,沒有打印的支持,也一定不算是一個完整的軟件。

創(chuàng)新互聯(lián)主營天寧網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,App定制開發(fā),天寧h5小程序定制開發(fā)搭建,天寧網(wǎng)站營銷推廣歡迎天寧等地區(qū)企業(yè)咨詢

對于打印,我們總是在用戶打印之前可以看看打印的效果,這時,一般的軟件都提供了打印預(yù)覽;如果需要調(diào)整打印的效果如紙張的大小、邊距的設(shè)置,又提供了頁面設(shè)置對話框讓用戶選擇和調(diào)整;如果系統(tǒng)有多個打印機(jī),當(dāng)用戶單擊打印按鈕時還可以選擇輸出的對象。

總之,對于打印,我們至少要提供打印頁面設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽對話框,讓用戶有更多的機(jī)會參與交互。這一些,是一個打印模塊比較重要也比較基本的東西,讓我們一起來實(shí)現(xiàn)它們吧。

進(jìn)入Vs2003 IDE,從文件菜單上單擊新建項(xiàng)目,項(xiàng)目類型為C#,在模板中選擇類庫,名稱估且叫GoldPrinter,確定即可。在打開的開發(fā)環(huán)境中,刪除解決方案資源管理器中默認(rèn)生成的Class1.cs。

現(xiàn)在,我們要考慮一下,對于打印,可能是在Windows下,也可能是Web下。如果將兩者的方法統(tǒng)一起來,讓調(diào)用者不用操心是什么方式下那該多好啊。因此,我們首先設(shè)計一個接口,提供兩者共用的方法。
在項(xiàng)目上鼠標(biāo)右鍵單擊后添加一個新類,名稱為:IPrinterPageSetting,由于是接口,將class改為interface,并去掉構(gòu)造函數(shù)??瓷先?yīng)類似如下:
using System;
namespace GoldPrinter
{
/// <summary>
/// IPrinterPageSetting 的摘要說明。
/// </summary>
public class IPrinterPageSetting
{
}
}

方法中至少包含三個聲明即ShowPageSetupDialog()、ShowPrintSetupDialog()、ShowPrintPreviewDialog(),也就是打開打印頁面設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽對話框。
  Vs2003為我們提供了一個PrintDocument,名字空間是System.Drawing.Printing。PrintDocument是為打印而提供的一個類,它的概述(summary)是這樣的:定義一個可再次使用的對象,該對象將輸出發(fā)送到打印機(jī)。

PrintDocument為我們封裝了很多復(fù)雜的細(xì)節(jié),它有一個至關(guān)重要的事件叫PrintPage,PrintPage的概述是:當(dāng)需要為當(dāng)前頁打的輸出時發(fā)生。因此,我們只要引發(fā)了打印事件,把打印的具體輸出的對象交給PrintPage,別的我們就不用操心了。

那么,我們怎么實(shí)現(xiàn)具體輸出的過程呢?由于是封裝,我們也不可能知道最終用戶具體怎么去實(shí)現(xiàn),這時,委托(Delegate)為我們起了大的作用。大家都知道一個函數(shù)實(shí)現(xiàn)某個功能的時候往往需要一些輸入的數(shù)據(jù),但是函數(shù)本身并不知道這些數(shù)據(jù)到底是哪個具體的值,只知道這個值的數(shù)據(jù)類型,這時引入了參數(shù),調(diào)用者調(diào)用函數(shù)據(jù)的時候傳入相應(yīng)類型的具體值就行了。大家應(yīng)該意識到了我的用意,與函數(shù)類似,我們?yōu)榇蛴√峁┝岁P(guān)聯(lián)打印機(jī)的方法,但是具體的實(shí)現(xiàn)只有由調(diào)用者去實(shí)現(xiàn),不同之處是函數(shù)傳遞的是參數(shù),而我們要做的委托傳遞的是方法。這時,我們只要為兩者建立對應(yīng)關(guān)系就可以了,這就是委托。我們需要定義一個委托,參數(shù)類型與PrintPage的一致就可以了,即(Object obj,System.Drawing.Printing.PrintPageEventArgs ev)。

由此可見,我們需要做下面的一些事情:
  1、在項(xiàng)目的引用處添加引用,在彈出的對話框的.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 的接口,顯示打印紙張設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽對話框。
/// 程序提供:周方勇;Email:flygoldfish@sina.com。
/// </summary>
public interface IPrinterPageSetting
{
  /// <summary>
  /// 獲取或設(shè)置打印文檔
  /// </summary>
  System.Drawing.Printing.PrintDocument PrintDocument
  {
   get;
   set;
  }

/// <summary>
  /// 關(guān)聯(lián)一個方法,目的是讓具體的打印由實(shí)例化者來操作
  /// 如PrinterPageSetting1.PrintPage += new PrintPageDelegate(this.PrintPageEventHandler);
  /// </summary>
  PrintPageDelegate PrintPage
  {
   get;
   set;
  }

/// <summary>
  /// 顯示頁面設(shè)置對話框,并返回PageSettings
  /// </summary>
  /// <returns></returns>
  System.Drawing.Printing.PageSettings ShowPageSetupDialog();

/// <summary>
  /// 顯示打印機(jī)設(shè)置對話框,并返回PrinterSettings
  /// </summary>
  /// <returns></returns>
  System.Drawing.Printing.PrinterSettings ShowPrintSetupDialog();

/// <summary>
  /// 顯示打印預(yù)覽對話框
  /// </summary>
  void ShowPrintPreviewDialog();

}//End Interface
}//End NameSpace

下面,我們以Windows下的編程方式實(shí)現(xiàn),同時也列Web編程下的框架。由于是Windows下的編程,我們可能用到對話框什么的作為錯誤提示,因此,我們同理要加入System.Windows.Forms.dll引用。再建立一個類文件,名稱為WinPrinterPageSetting。進(jìn)入文件后,在類聲明后面加上:IPrinterPageSetting,實(shí)現(xiàn)接口功能。程序清單如下,程序中有很多注釋,這里不再多說。

using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;

namespace GoldPrinter
{
/// <summary>
/// WinForm下的打印紙張設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽對話框。
/// </summary>
public class WinPrinterPageSetting:IPrinterPageSetting
{
  //把PrintPage委托聲明為類的一個成員變量
  private PrintPageDelegate _printPage; 
  // 打印文檔
  private PrintDocument _printDocument;

#region 構(gòu)造函數(shù)
  public WinPrinterPageSetting():this(null)
  {
  }

/// <summary>
  /// 使用printDocument來初始化類的新實(shí)例,當(dāng)printDocument為null時自動創(chuàng)建一個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)一個方法,目的是讓具體的打印由實(shí)例化者來操作
  /// 如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>
  /// 顯示頁面設(shè)置對話框,并返回PageSettings
  /// </summary>
  /// <returns></returns>
  public PageSettings ShowPageSetupDialog()
  {
   return ShowPageSetupDialog(this._printDocument);
  }

/// <summary>
  /// 顯示打印機(jī)設(shè)置對話框,并返回PrinterSettings
  /// </summary>
  /// <returns></returns>
  public PrinterSettings ShowPrintSetupDialog()
  {
   return ShowPrintSetupDialog(this._printDocument);
  }

/// <summary>
  /// 顯示打印預(yù)覽對話框
  /// </summary>
  public void ShowPrintPreviewDialog()
  {
   ShowPrintPreviewDialog(this._printDocument);
  }

#endregion

  //***************注意:以下幾個對話框方法可以獨(dú)立使用***************
  #region 頁面設(shè)置對話框 protected virtual PageSettings ShowPageSetupDialog(PrintDocument printDocument)
  /// <summary>
  /// 頁面設(shè)置對話框,可以獨(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)文檔及文檔頁面默認(rèn)設(shè)置
    psDlg.Document = printDocument;
    psDlg.PageSettings = printDocument.DefaultPageSettings;

//顯示對話框
    DialogResult result = psDlg.ShowDialog();
    if (result == DialogResult.OK)
    {
     ps = psDlg.PageSettings;
     printDocument.DefaultPageSettings = psDlg.PageSettings;
    }

}
   catch(System.Drawing.Printing.InvalidPrinterException e)
   {
    MessageBox.Show("未安裝打印機(jī),請進(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è)置對話框 protected virtual PrinterSettings ShowPrintSetupDialog(PrintDocument printDocument)
  /// <summary>
  /// 打印設(shè)置對話框,可以獨(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();
    //可以選定頁
    pDlg.AllowSomePages = true;

//指定打印文檔
    pDlg.Document = printDocument;

//顯示對話框
    DialogResult result = pDlg.ShowDialog();
    if (result == DialogResult.OK)
    {
     //保存打印設(shè)置
     ps = pDlg.PrinterSettings;
     //打印
     printDocument.Print();
    }

}
   catch(System.Drawing.Printing.InvalidPrinterException e)
   {
    MessageBox.Show("未安裝打印機(jī),請進(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ù)覽對話框 protected virtual void ShowPrintPreviewDialog(PrintDocument printDocument)
  /// <summary>
  /// 打印預(yù)覽對話框,可以獨(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;

    //顯示對話框
    DialogResult result = ppDlg.ShowDialog();
    if (result == DialogResult.OK)
    {
     //...
    }

}
   catch(System.Drawing.Printing.InvalidPrinterException e)
   {
    MessageBox.Show("未安裝打印機(jī),請進(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一起使用,可以把中間的文本折疊起來,很方便,需要查看的時候就單擊前面的展開符號。后三個函數(shù)是比較重要的方法,同時提供它們的重載函數(shù)。ShowPageSetupDialog()與ShowPrintSetupDialog()返回用戶確認(rèn)的當(dāng)前設(shè)置選擇。

再建立一個類文件,名稱為WebPrinterPageSetting。進(jìn)入文件后,在類聲明后面加上:IPrinterPageSetting,實(shí)現(xiàn)接口功能。程序清單如下:

using System;

namespace GoldPrinter
{
/// <summary>
/// WebForm下的打印紙張設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽對話框。(***暫無具體實(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

做到了這一步,大家可能說已經(jīng)可以了,確實(shí)如此。因?yàn)樵谡{(diào)用的時候?qū)嵗疻inPrinterPageSetting/WebPrinterPageSetting并調(diào)用它的方法或?qū)傩跃涂梢粤?。大家再想想我為什么要提供IPrinterPageSetting呢?如果我現(xiàn)在調(diào)用打印對話框,我也不管是Windows下還是Web下的,這時,IPrinterPageSetting就發(fā)揮了作用。

例如:
IPrinterPageSetting _printerPageSetting;
申明了一個打印接口對象,以后就可以直接調(diào)用它的方法了,但是到底是Windows模式還是Web模式呢,我們只需要讓程序自己去根據(jù)系統(tǒng)去實(shí)例為真正的WinPrinterPageSetting或WebPrinterPageSetting了。如:

//創(chuàng)建接口對象的新實(shí)例,使其指象真正的實(shí)現(xiàn)其接口的對象
if (Windows模式)
{
_printerPageSetting = new WinPrinterPageSetting();
}
else if(Web模式)
{
_printerPageSetting = new WebPrinterPageSetting();
}
在接下來的程序清單中我們可以看到這個效果。我們再建立一個PrinterPageSetting類,將WinPrinterPageSetting與WebPrinterPageSetting合二為一。在類的構(gòu)造函數(shù)中增加自動判斷Windows模式還是Web模式,同時也提供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>
/// 封裝頁面設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽,適合于Window和Asp.Net。
/// 程序提供:周方勇;Email:flygoldfish@sina.com。
/// </summary>
public class PrinterPageSetting
{
  //申明一個封裝頁面設(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)建接口對象的新實(shí)例,使其指象真正的實(shí)現(xiàn)其接口的對象
   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)一個方法,目的是讓具體的打印由實(shí)例化者來操作
  /// 如PrinterPageSetting1.PrintPage += new PrintPageDelegate(this.PrintPageEventHandler);
  /// </summary>
  public PrintPageDelegate PrintPage
  {
   set
   {
    _printerPageSetting.PrintPage = value;
   }
   get
   {
    return _printerPageSetting.PrintPage;
   }
  }

#region 構(gòu)造函數(shù)
  /// <summary>
  ///  封裝頁面設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽,適合于Window和Asp.Net,Web方式下請在配置文件中增加鍵PrintMode及值Web,也可以實(shí)例化后設(shè)置PrintMode屬性為PrintModeFlag.Web。
  /// </summary>
  public PrinterPageSetting():this(null)
  {
  }

/// <summary>
  ///  封裝頁面設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽,適合于Window和Asp.Net,Web方式下請在配置文件中增加鍵PrintMode及值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>
  /// 顯示頁面設(shè)置對話框,并返回PageSettings
  /// </summary>
  /// <returns></returns>
  public PageSettings ShowPageSetupDialog()
  {
   return _printerPageSetting.ShowPageSetupDialog();
  }

/// <summary>
  /// 顯示打印機(jī)設(shè)置對話框,并返回PrinterSettings
  /// </summary>
  /// <returns></returns>
  public PrinterSettings ShowPrintSetupDialog()
  {
   return _printerPageSetting.ShowPrintSetupDialog(); 
  }

/// <summary>
  /// 顯示打印預(yù)覽對話框
  /// </summary>
  public void ShowPrintPreviewDialog()
  {
   _printerPageSetting.ShowPrintPreviewDialog();
  }

}//End Class
}//End NameSpace

在這個類的構(gòu)造函數(shù)中,提到了配置文件。在建立Asp.Net應(yīng)用程序的時候自動會生成一個名為WebMIS.Config的文件,文件里有一些環(huán)境和其它信息的設(shè)置,可以簡單的理解為為程序提供一個外部設(shè)置的接口,提高應(yīng)用程序的靈活性。在建立Windows應(yīng)用程序的時候默認(rèn)情況下沒有這樣的文件,但是可以在項(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)打印頁面設(shè)置、打印機(jī)設(shè)置、打印預(yù)覽對話框的實(shí)現(xiàn)全部結(jié)束,我們可以將程序編譯成一個動態(tài)庫了。

文章標(biāo)題:ASP.Net環(huán)境下有關(guān)打印方面的技術(shù)精華
文章網(wǎng)址:http://aaarwkj.com/article40/pcogho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、微信小程序、響應(yīng)式網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、電子商務(wù)、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
爽妇网亚洲一区二区三区| 人妻av一区二区三区| 色噜噜色一区二区三区| 久草国产免费福利在线视频| 亚洲一区二区三区三洲| 高清日本一区二区三区不卡片| 免费不卡无码毛片观看| 中文字幕亚洲无级av| 偷拍色图一区二区二区| 欧美一区二区三区日| 国产精品日本欧美久久久| 熟妇女人妻丰满少妇中文| 天堂av新版在线观看| 精品久久久久久亚洲电影| 国产三级视频网站在线观看| 日韩中文字幕一二一二区| 蜜桃视频中文字幕二区三区 | 18末年禁止观看免费软件| 一区二区三区乱码国产在线| 日本人妻精品在线观看| 麻豆人妻少妇精品毛片| 偷拍视频一区二区三区| 国产午夜精品自拍视频| 视频免费观看网站不卡| 福利成人午夜国产一区| 亚洲成人高清av在线| 日韩精品视频性色首页| 超碰国产熟女一区二区三区| 亚洲欧美另类不卡专区| 丰满人妻少妇精品一区二区三区| 国内精品自产拍久久久久久久久91 | 国产亚洲精品久久久久久| 中文字幕av日韩在线| 国产精品网站在线观看不卡| 国产黄色片子在线观看| 国产口爆一区二区三区| 久青青国产综合自拍视频在线观看| 中文字幕日韩人妻一二三区| 日韩精品一区二区三区四区蜜桃| 在线观看后入大屁股| 91免费视频精品麻豆|