在C#中,如何将内容进行打印,是一个表格中的内容,我想在点击一个按钮后,就进行打印!!

解决方案 »

  1.   


    C#实现打印功能具体的操作步骤如下:创建一个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();  
     } 
    C#实现打印功能的实例如下:使用时先创建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 ();//实现C#打印之创建一个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();//实现C#打印之开始打印  
     }   
     
    }   
     
    // 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,printFont,  
    System.Drawing.Brushes.Black,e.MarginBounds.X,e.MarginBounds.Y);  
     break;  
    case "image":  
     System.Drawing.Image image=  
    System.Drawing.Image.FromStream(this.streamToPrint);  
     int x=e.MarginBounds.X;  
     int y=e.MarginBounds.Y;  
     int width=image.Width;  
     int height=image.Height;  
     if((width/e.MarginBounds.Width)>(  
    height/e.MarginBounds.Height))  
     {  
    width=e.MarginBounds.Width;  
    height=image.Height*e.MarginBounds.Width/image.Width;  
     }  
     else 
     {  
    height=e.MarginBounds.Height;  
    width=image.Width*e.MarginBounds.Height/image.Height;  
     }  
     System.Drawing.Rectangle destRect=  
    new System.Drawing.Rectangle(x,y,width,height);  
     e.Graphics.DrawImage(image,  
    destRect,0,0,image.Width,image.Height,  
    System.Drawing.GraphicsUnit.Pixel);  
     break;  
    default:  
     break;  
     }  
       
    }   
     
    }  
    }  
      

  2.   

    忘记说一句了,我做的是一个 WEB 的网页!