程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#中打印A4紙的實現(1)

C#中打印A4紙的實現(1)

編輯:關於C語言

在VB中,如果要打印打印A4文檔,且內容是從DB中,或者DataGrid中等動態獲取的,實現起來非常簡 單,諸如以下代碼(rs表示一記錄集):

  rs.MoveFirst
  Printer.PaperSize = vbPRPSA4
  Printer.OrIEntation = vbPRORPortrait
  Printer.FontName = "CourIEr New"
  Printer.FontBold = True
  Printer.FontSize = 24
  Printer.Print "        FQA Report"
  Printer.FontSize = 16
  Printer.Print "  Pallet ID:" & Trim(rs("pallet_id"))
   NewLine2 = String(100, " ")
  Mid(NewLine2, 1, 5) = "NO#"
  Mid(NewLine2, 10, 30) = "System S/N"
  Mid(NewLine2, 35, 20) = "BOX_ID"
  Mid(NewLine2, 60, 20) = "Pallet_ID"
  While Not rs.EOF
    NewLine2 = String(100, " ")
    Mid(NewLine2, 1, 5) = Trim(rs("No"))
    Mid(NewLine2, 10, 30) = Trim(rs("SN"))
    Mid(NewLine2, 35, 20) = Trim(rs("BOX_ID"))
    Mid(NewLine2, 60, 20) = "" & Trim(rs("Pallet_ID"))
    Printer.Print NewLine2
    rs.MoveNext
  Wend
  Printer.Print NewLine2
   Printer.Print String(100, "-")

在上述代碼中,如果記錄集中的數量很多, 即內容超出了一頁紙,程序不用做任何設置,便會自動分頁,那麼到.Net中,如何實現這麼一個簡單的功 能呢?

查了好多資料,上網搜了好久,發現沒有類似的例子,看了MSDN後,才發現,到VB.Net中 ,VB中那麼好用的Printer不見了,一下為MSDN的描述:http://msdn.microsoft.com/zh- tw/library/cc438273(VS.71).ASPx

"Visual Basic 6.0 中的 Printer 物件在 Visual Basic .NET 中是由 PrintDocument 組件取 代。兩者的行為不同,但在多數情況下可復制功能。下表將列出 Visual Basic 6.0 屬性 (Property)、 方法及事件與其 Visual Basic .Net 對等用法。如果沒有直接的對等用法,則會提供連結以取得其它信 息。除非另外注明,否則所有的對象都是在 System.Drawing 命名空間中。"

第一感覺是, 在.Net中有比這更好用的打印功能,而且功能更強大,於是開始翻書,上網找例子,花了好長時間後,終 於在網上找到了兩個例子,跟教科書(C#高級編程第四版第25章,VB 2005入門經典第7章)裡的例子差不 多,例子中都是要先打開文檔,LoadFile後,然後計算中共有多少行,然後設置一些屬性等等,雖然功能 強大,但是極其復雜,不能直接拿來用,於是只好自己改寫。。。

打印Function:

public bool PrintDoc()
{
  try
  {
    //獲取需要打 印的內容
    string strSQL = "exec [usp_PalletPrintDocInfo] '"
      + Parameters.strStation + "', '" + Parameters.strPalletID + "'";
    dsPrintInfo = doDB.GetDataSet(strSQL);
    if (dsPrintInfo.Tables[0].Rows.Count < 1 || dsPrintInfo.Tables[1].Rows.Count < 1)
     {
      Parameters.strMsg = "Get Print Information Error";
      return false;
    }
    //打印
    PrintDocument printDocument = new PrintDocument();
    printDocument.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
    printDocument.Print();
     /**/////打印預覽,調試的時候,可以通過這個,節約紙張
    //PrintPreviewDialog ppd = new PrintPrevIEwDialog();
    //PrintDocument pd = new PrintDocument();
     //pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
     //ppd.Document = pd;
    //ppd.ShowDialog();
    return true;
   }
  catch(Exception ex)
  {
    Parameters.strMsg = ex.Message.ToString();
    return false;
  }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved