C#打印文件的簡(jiǎn)單實(shí)例
作者:佚名 
  C#打印文件是按照文件內(nèi)的內(nèi)容進(jìn)行打印的過(guò)程,這其中需要.NET Framework組件的部分功能進(jìn)行支持,希望本文能對(duì)大家有所幫助。
 C#打印文件的過(guò)程中,需要對(duì)所打印文件進(jìn)行預(yù)覽,對(duì)版式也有所要求。C#打印文件期間,也有可能出現(xiàn)錯(cuò)誤推出,這些都是我們開(kāi)發(fā)人員需要考慮的問(wèn)題。
以下是C#打印文件的代碼。
- using System;
 - using System.Drawing;
 - using System.Collections;
 - using System.ComponentModel;
 - using System.Windows.Forms;
 - using System.Data;
 - using System.IO;
 - using System.Text;
 - using System.Drawing.Printing;
 - namespace PrintDemo
 - ...{
 - /**//// <summary>
 - /// Form1 的摘要說(shuō)明。
 - /// </summary>
 - public class DemoForm : System.Windows.Forms.Form
 - ...{
 - private System.Windows.Forms.TextBox txtDoc;
 - private System.Windows.Forms.MainMenu mnuMain;
 - private System.Windows.Forms.MenuItem mnuFile;
 - private System.Windows.Forms.MenuItem mnuFileOpen;
 - private System.Windows.Forms.MenuItem mnuFilePrint;
 - private System.Windows.Forms.MenuItem mnuFormat;
 - private System.Windows.Forms.MenuItem mnuFormatFont;
 - private System.Windows.Forms.OpenFileDialog dlgOpen;
 - private System.Windows.Forms.FontDialog dlgFont;
 - private System.Drawing.Printing.PrintDocument pdoc;
 - /**//// <summary>
 - /// 必需的設(shè)計(jì)器變量。
 - /// </summary>
 - private System.ComponentModel.Container components = null;
 - private System.Windows.Forms.MenuItem mnuFilePrintPreview;
 - private System.Windows.Forms.MenuItem mnuFilePageSetup;
 - private System.Windows.Forms.PrintPreviewDialog ppd;
 - private System.Windows.Forms.PageSetupDialog dlgPageSetup;
 - private System.Windows.Forms.PrintDialog dlgPrinterSetup;
 - private int totalLines;
 - public DemoForm()
 - ...{
 - //
 - // Windows 窗體設(shè)計(jì)器支持所必需的
 - //
 - InitializeComponent();
 - //
 - // TODO: 在 InitializeComponent 調(diào)用后添加任何構(gòu)造函數(shù)代碼
 - //
 - }
 - /**//// <summary>
 - /// 清理所有正在使用的資源。
 - /// </summary>
 - protected override void Dispose( bool disposing )
 - ...{
 - if( disposing )
 - ...{
 - if (components != null)
 - ...{
 - components.Dispose();
 - }
 - }
 - base.Dispose( disposing );
 - }
 - Windows 窗體設(shè)計(jì)器生成的代碼#region Windows 窗體設(shè)計(jì)器生成的代碼
 - /**//// <summary>
 - /// 設(shè)計(jì)器支持所需的方法 - 不要使用代碼編輯器修改
 - /// 此方法的內(nèi)容。
 - /// </summary>
 - private void InitializeComponent()
 - ...{
 - System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(DemoForm));
 - this.txtDoc = new System.Windows.Forms.TextBox();
 - this.mnuMain = new System.Windows.Forms.MainMenu();
 - this.mnuFile = new System.Windows.Forms.MenuItem();
 - this.mnuFileOpen = new System.Windows.Forms.MenuItem();
 - this.mnuFilePrint = new System.Windows.Forms.MenuItem();
 - this.mnuFormat = new System.Windows.Forms.MenuItem();
 - this.mnuFormatFont = new System.Windows.Forms.MenuItem();
 - this.dlgOpen = new System.Windows.Forms.OpenFileDialog();
 - this.dlgFont = new System.Windows.Forms.FontDialog();
 - this.pdoc = new System.Drawing.Printing.PrintDocument();
 - this.mnuFilePrintPreview = new System.Windows.Forms.MenuItem();
 - this.mnuFilePageSetup = new System.Windows.Forms.MenuItem();
 - this.ppd = new System.Windows.Forms.PrintPreviewDialog();
 - this.dlgPageSetup = new System.Windows.Forms.PageSetupDialog();
 - this.dlgPrinterSetup = new System.Windows.Forms.PrintDialog();
 - this.SuspendLayout();
 - //
 - // txtDoc
 - //
 - this.txtDoc.Dock = System.Windows.Forms.DockStyle.Fill;
 - this.txtDoc.Location = new System.Drawing.Point(0, 0);
 - this.txtDoc.Multiline = true;
 - this.txtDoc.Name = "txtDoc";
 - this.txtDoc.ScrollBars = System.Windows.Forms.ScrollBars.Both;
 - this.txtDoc.Size = new System.Drawing.Size(560, 309);
 - this.txtDoc.TabIndex = 0;
 - this.txtDoc.Text = "";
 - this.txtDoc.WordWrap = false;
 - this.txtDoc.TextChanged += new System.EventHandler(this.txtDoc_TextChanged);
 - //
 - // mnuMain
 - //
 - this.mnuMain.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] ...{
 - this.mnuFile,
 - this.mnuFormat});
 - //
 - // mnuFile
 - //
 - this.mnuFile.Index = 0;
 - this.mnuFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] ...{
 - this.mnuFileOpen,
 - this.mnuFilePageSetup,
 - this.mnuFilePrintPreview,
 - this.mnuFilePrint});
 - this.mnuFile.Text = "文件(&F)";
 - //
 - // mnuFileOpen
 - //
 - this.mnuFileOpen.Index = 0;
 - this.mnuFileOpen.Text = "打開(kāi)(&O)...";
 - this.mnuFileOpen.Click += new System.EventHandler(this.mnuFileOpen_Click);
 - //
 - // mnuFilePrint
 - //
 - this.mnuFilePrint.Index = 3;
 - this.mnuFilePrint.Text = "打印(&P)...";
 - this.mnuFilePrint.Click += new System.EventHandler(this.mnuFilePrint_Click);
 - //
 - // mnuFormat
 - //
 - this.mnuFormat.Index = 1;
 - this.mnuFormat.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] ...{
 - this.mnuFormatFont});
 - this.mnuFormat.Text = "格式(&F)";
 - //
 - // mnuFormatFont
 - //
 - this.mnuFormatFont.Index = 0;
 - this.mnuFormatFont.Text = "字體(&O)";
 - this.mnuFormatFont.Click += new System.EventHandler(this.mnuFormatFont_Click);
 - //
 - // dlgOpen
 - //
 - this.dlgOpen.Filter = "文本文件|*.txt|所有文件|*.*";
 - //
 - // pdoc
 - //
 - this.pdoc.DocumentName = "abc";
 - this.pdoc.BeginPrint += new System.Drawing.Printing.PrintEventHandler(this.pdoc_BeginPrint);
 - this.pdoc.EndPrint += new System.Drawing.Printing.PrintEventHandler(this.pdoc_EndPrint);
 - this.pdoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.pdoc_PrintPage);
 - //
 - // mnuFilePrintPreview
 - //
 - this.mnuFilePrintPreview.Index = 2;
 - this.mnuFilePrintPreview.Text = "打印預(yù)覽...";
 - this.mnuFilePrintPreview.Click += new System.EventHandler(this.mnuFilePrintPreview_Click);
 - //
 - // mnuFilePageSetup
 - //
 - this.mnuFilePageSetup.Index = 1;
 - this.mnuFilePageSetup.Text = "頁(yè)面設(shè)置...";
 - this.mnuFilePageSetup.Click += new System.EventHandler(this.mnuFilePageSetup_Click);
 - //
 - // ppd
 - //
 - this.ppd.AutoScrollMargin = new System.Drawing.Size(0, 0);
 - this.ppd.AutoScrollMinSize = new System.Drawing.Size(0, 0);
 - this.ppd.ClientSize = new System.Drawing.Size(400, 300);
 - this.ppd.Document = this.pdoc;
 - this.ppd.Enabled = true;
 - this.ppd.Icon = ((System.Drawing.Icon)(resources.GetObject("ppd.Icon")));
 - this.ppd.Location = new System.Drawing.Point(317, 17);
 - this.ppd.MinimumSize = new System.Drawing.Size(375, 250);
 - this.ppd.Name = "ppd";
 - this.ppd.TransparencyKey = System.Drawing.Color.Empty;
 - this.ppd.Visible = false;
 - //
 - // dlgPageSetup
 - //
 - this.dlgPageSetup.Document = this.pdoc;
 - //
 - // dlgPrinterSetup
 - //
 - this.dlgPrinterSetup.Document = this.pdoc;
 - //
 - // DemoForm
 - //
 - this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
 - this.ClientSize = new System.Drawing.Size(560, 309);
 - this.Controls.Add(this.txtDoc);
 - this.Menu = this.mnuMain;
 - this.Name = "DemoForm";
 - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
 - this.Text = "打印";
 - this.ResumeLayout(false);
 - }
 - #endregion
 - /**//// <summary>
 - /// 應(yīng)用程序的主入口點(diǎn)。
 - /// </summary>
 - [STAThread]
 - static void Main()
 - ...{
 - Application.Run(new DemoForm());
 - }
 - private void mnuFileOpen_Click(object sender, System.EventArgs e)
 - ...{
 - if (dlgOpen.ShowDialog()==DialogResult.OK)
 - ...{
 - StreamReader sr=null;
 - try
 - ...{
 - sr=new StreamReader(dlgOpen.FileName,Encoding.Default,true);
 - txtDoc.Text=sr.ReadToEnd();
 - }
 - catch
 - ...{
 - MessageBox.Show("打開(kāi)文件失??!","錯(cuò)誤",MessageBoxButtons.OK,MessageBoxIcon.Error);
 - }
 - finally
 - ...{
 - if (sr!=null) sr.Close();
 - }
 - }
 - }
 - private void mnuFormatFont_Click(object sender, System.EventArgs e)
 - ...{
 - dlgFont.Font=txtDoc.Font;
 - if (dlgFont.ShowDialog()==DialogResult.OK)
 - ...{
 - txtDoc.Font=dlgFont.Font;
 - }
 - }
 - private void pdoc_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
 - ...{
 - //MessageBox.Show("開(kāi)始打印啦");
 - }
 - private void pdoc_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
 - ...{
 - //MessageBox.Show("打印結(jié)束");
 - }
 - private void pdoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
 - ...{
 - Graphics g=e.Graphics;
 - float lineHeight=txtDoc.Font.GetHeight(g);
 - int linesPerPage=(int)(e.MarginBounds.Height/lineHeight);
 - int count=0; //本頁(yè)已打印行數(shù)
 - while (count<linesPerPage && totalLines<txtDoc.Lines.Length)
 - ...{
 - g.DrawString(txtDoc.Lines[totalLines],txtDoc.Font,Brushes.Black,e.MarginBounds.X,e.MarginBounds.Y+lineHeight*count);
 - count++;
 - totalLines++;
 - }
 - if (totalLines<txtDoc.Lines.Length)
 - ...{
 - e.HasMorePages=true;
 - }
 - else
 - ...{
 - e.HasMorePages=false;
 - totalLines=0;
 - }
 - }
 - private void mnuFilePrint_Click(object sender, System.EventArgs e)
 - ...{
 - if (dlgPrinterSetup.ShowDialog()==DialogResult.OK)
 - ...{
 - pdoc.Print(); //開(kāi)始執(zhí)行打印
 - }
 - }
 - private void txtDoc_TextChanged(object sender, System.EventArgs e)
 - ...{
 - }
 - private void mnuFilePrintPreview_Click(object sender, System.EventArgs e)
 - ...{
 - ppd.ShowDialog();
 - }
 - private void mnuFilePageSetup_Click(object sender, System.EventArgs e)
 - ...{
 - Margins oldMargins=dlgPageSetup.PageSettings.Margins;
 - dlgPageSetup.PageSettings.Margins=new Margins((int)(oldMargins.Left*2.54),(int)(oldMargins.Right*2.54),(int)(oldMargins.Top*2.54),(int)(oldMargins.Bottom*2.54));
 - if (dlgPageSetup.ShowDialog()==DialogResult.Cancel)
 - ...{
 - dlgPageSetup.PageSettings.Margins=oldMargins;
 - }
 - }
 - }
 - }
 
C#打印文件的簡(jiǎn)單實(shí)例就介紹到這里。
【編輯推薦】
責(zé)任編輯:彭凡 
                    來(lái)源:
                    CSDN
 














 
 
 
 
 
 
 