在C#中使用PrintDialog可以很方便的实现程序的打印功能。
其步骤如下:
创建一个PrintDialog的实例。如下:
System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog (); 
创建一个PrintDocument的实例.如下:
System.Drawing.Printing.PrintDocument docToPrint = 
   new System.Drawing.Printing.PrintDocument(); 
设置打印机开始打印的事件处理函数.函数原形如下:
void docToPrint_PrintPage(object sender, 
   System.Drawing.Printing.PrintPageEventArgs e) 
将事件处理函数添加到PrintDocument的PrintPage事件中。
docToPrint.PrintPage+=new PrintPageEventHandler(docToPrint_PrintPage); 
设置PrintDocument的相关属性,如:
PrintDialog1.AllowSomePages = true;PrintDialog1.ShowHelp = true; 
把PrintDialog的Document属性设为上面配置好的PrintDocument的实例:
PrintDialog1.Document = docToPrint; 
调用PrintDialog的ShowDialog函数显示打印对话框:
DialogResult result = PrintDialog1.ShowDialog(); 
根据用户的选择,开始打印:
if (result==DialogResult.OK)
   {
    docToPrint.Print();
   }
例子如下:
使用时先创建PrintService类的实例,然后调用void StartPrint(Stream streamToPrint,string streamType)函数开始打印。其中streamToPrint是要打印的内容(字节流),streamType是流的类型(txt表示普通文本,image表示图像);
--------------------------------------------------------------------------------
using System;
using System.Drawing.Printing;
using System.Windows.Forms;
using System.IO;
namespace EDImageSystem
{
 /// <summary>
 /// PrintService 的摘要说明。
 /// </summary>
 public class PrintService
 {
  public PrintService()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
   this.docToPrint.PrintPage+=new PrintPageEventHandler(docToPrint_PrintPage);
  }//将事件处理函数添加到PrintDocument的PrintPage中
  // Declare the PrintDocument object.
  private System.Drawing.Printing.PrintDocument docToPrint = 
   new System.Drawing.Printing.PrintDocument();//创建一个PrintDocument的实例
  private System.IO.Stream streamToPrint;
  string streamType;
  // This method will set properties on the PrintDialog object and
  // then display the dialog.
  public void StartPrint(Stream streamToPrint,string streamType)
  {
   this.streamToPrint=streamToPrint;
   this.streamType=streamType;
   // Allow the user to choose the page range he or she would
   // like to print.
   System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog ();//创建一个PrintDialog的实例。
   PrintDialog1.AllowSomePages = true;
   // Show the help button.
   PrintDialog1.ShowHelp = true;
   // Set the Document property to the PrintDocument for 
   // which the PrintPage Event has been handled. To display the
   // dialog, either this property or the PrinterSettings property 
   // must be set 
   PrintDialog1.Document = docToPrint;//把PrintDialog的Document属性设为上面配置好的PrintDocument的实例
   DialogResult result = PrintDialog1.ShowDialog();//调用PrintDialog的ShowDialog函数显示打印对话框
   // If the result is OK then print the document.
   if (result==DialogResult.OK)
   {
    docToPrint.Print();//开始打印
   }
  }
// The PrintDialog will print the document
  // by handling the document’s PrintPage event.
  private void docToPrint_PrintPage(object sender, 
   System.Drawing.Printing.PrintPageEventArgs e)//设置打印机开始打印的事件处理函数
  {
   // Insert code to render the page here.
   // This code will be called when the control is drawn.
   // The following code will render a simple
   // message on the printed document
   switch(this.streamType)
   {
    case "txt":
     string text = null;
     System.Drawing.Font printFont = new System.Drawing.Font
      ("Arial", 35, System.Drawing.FontStyle.Regular);
     // Draw the content.
     System.IO.StreamReader streamReader=new StreamReader(this.streamToPrint);
     text=streamReader.ReadToEnd();
     e.Graphics.DrawString(text