`
jiqimiao
  • 浏览: 63214 次
  • 性别: Icon_minigender_1
  • 来自: 常州
社区版块
存档分类
最新评论

c#打印文本文件简单实例

 
阅读更多

实例代码如下:

usingSystem;
usingSystem.Drawing;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Windows.Forms;
usingSystem.Data;
usingSystem.IO;
usingSystem.Text;
usingSystem.Drawing.Printing;

namespacePrintDemo
...{
/**////<summary>
///Form1的摘要说明。
///</summary>

publicclassDemoForm:System.Windows.Forms.Form
...{
privateSystem.Windows.Forms.TextBoxtxtDoc;
privateSystem.Windows.Forms.MainMenumnuMain;
privateSystem.Windows.Forms.MenuItemmnuFile;
privateSystem.Windows.Forms.MenuItemmnuFileOpen;
privateSystem.Windows.Forms.MenuItemmnuFilePrint;
privateSystem.Windows.Forms.MenuItemmnuFormat;
privateSystem.Windows.Forms.MenuItemmnuFormatFont;
privateSystem.Windows.Forms.OpenFileDialogdlgOpen;
privateSystem.Windows.Forms.FontDialogdlgFont;
privateSystem.Drawing.Printing.PrintDocumentpdoc;
/**////<summary>
///必需的设计器变量。
///</summary>

privateSystem.ComponentModel.Containercomponents=null;
privateSystem.Windows.Forms.MenuItemmnuFilePrintPreview;
privateSystem.Windows.Forms.MenuItemmnuFilePageSetup;
privateSystem.Windows.Forms.PrintPreviewDialogppd;
privateSystem.Windows.Forms.PageSetupDialogdlgPageSetup;
privateSystem.Windows.Forms.PrintDialogdlgPrinterSetup;
privateinttotalLines;

publicDemoForm()
...{
//
//Windows窗体设计器支持所必需的
//
InitializeComponent();

//
//TODO:在InitializeComponent调用后添加任何构造函数代码
//
}


/**////<summary>
///清理所有正在使用的资源。
///</summary>

protectedoverridevoidDispose(booldisposing)
...{
if(disposing)
...{
if(components!=null)
...{
components.Dispose();
}

}

base.Dispose(disposing);
}


Windows窗体设计器生成的代码#regionWindows窗体设计器生成的代码
/**////<summary>
///设计器支持所需的方法-不要使用代码编辑器修改
///此方法的内容。
///</summary>

privatevoidInitializeComponent()
...{
System.Resources.ResourceManagerresources
=newSystem.Resources.ResourceManager(typeof(DemoForm));
this.txtDoc=newSystem.Windows.Forms.TextBox();
this.mnuMain=newSystem.Windows.Forms.MainMenu();
this.mnuFile=newSystem.Windows.Forms.MenuItem();
this.mnuFileOpen=newSystem.Windows.Forms.MenuItem();
this.mnuFilePrint=newSystem.Windows.Forms.MenuItem();
this.mnuFormat=newSystem.Windows.Forms.MenuItem();
this.mnuFormatFont=newSystem.Windows.Forms.MenuItem();
this.dlgOpen=newSystem.Windows.Forms.OpenFileDialog();
this.dlgFont=newSystem.Windows.Forms.FontDialog();
this.pdoc=newSystem.Drawing.Printing.PrintDocument();
this.mnuFilePrintPreview=newSystem.Windows.Forms.MenuItem();
this.mnuFilePageSetup=newSystem.Windows.Forms.MenuItem();
this.ppd=newSystem.Windows.Forms.PrintPreviewDialog();
this.dlgPageSetup=newSystem.Windows.Forms.PageSetupDialog();
this.dlgPrinterSetup=newSystem.Windows.Forms.PrintDialog();
this.SuspendLayout();
//
//txtDoc
//
this.txtDoc.Dock=System.Windows.Forms.DockStyle.Fill;
this.txtDoc.Location=newSystem.Drawing.Point(0,0);
this.txtDoc.Multiline=true;
this.txtDoc.Name="txtDoc";
this.txtDoc.ScrollBars=System.Windows.Forms.ScrollBars.Both;
this.txtDoc.Size=newSystem.Drawing.Size(560,309);
this.txtDoc.TabIndex=0;
this.txtDoc.Text="";
this.txtDoc.WordWrap=false;
this.txtDoc.TextChanged+=newSystem.EventHandler(this.txtDoc_TextChanged);
//
//mnuMain
//
this.mnuMain.MenuItems.AddRange(newSystem.Windows.Forms.MenuItem[]...{
this.mnuFile,
this.mnuFormat}
);
//
//mnuFile
//
this.mnuFile.Index=0;
this.mnuFile.MenuItems.AddRange(newSystem.Windows.Forms.MenuItem[]...{
this.mnuFileOpen,
this.mnuFilePageSetup,
this.mnuFilePrintPreview,
this.mnuFilePrint}
);
this.mnuFile.Text="文件(&F)";
//
//mnuFileOpen
//
this.mnuFileOpen.Index=0;
this.mnuFileOpen.Text="打开(&O)...";
this.mnuFileOpen.Click+=newSystem.EventHandler(this.mnuFileOpen_Click);
//
//mnuFilePrint
//
this.mnuFilePrint.Index=3;
this.mnuFilePrint.Text="打印(&P)...";
this.mnuFilePrint.Click+=newSystem.EventHandler(this.mnuFilePrint_Click);
//
//mnuFormat
//
this.mnuFormat.Index=1;
this.mnuFormat.MenuItems.AddRange(newSystem.Windows.Forms.MenuItem[]...{
this.mnuFormatFont}
);
this.mnuFormat.Text="格式(&F)";
//
//mnuFormatFont
//
this.mnuFormatFont.Index=0;
this.mnuFormatFont.Text="字体(&O)";
this.mnuFormatFont.Click+=newSystem.EventHandler(this.mnuFormatFont_Click);
//
//dlgOpen
//
this.dlgOpen.Filter="文本文件|*.txt|所有文件|*.*";
//
//pdoc
//
this.pdoc.DocumentName="abc";
this.pdoc.BeginPrint+=newSystem.Drawing.Printing.PrintEventHandler(this.pdoc_BeginPrint);
this.pdoc.EndPrint+=newSystem.Drawing.Printing.PrintEventHandler(this.pdoc_EndPrint);
this.pdoc.PrintPage+=newSystem.Drawing.Printing.PrintPageEventHandler(this.pdoc_PrintPage);
//
//mnuFilePrintPreview
//
this.mnuFilePrintPreview.Index=2;
this.mnuFilePrintPreview.Text="打印预览...";
this.mnuFilePrintPreview.Click+=newSystem.EventHandler(this.mnuFilePrintPreview_Click);
//
//mnuFilePageSetup
//
this.mnuFilePageSetup.Index=1;
this.mnuFilePageSetup.Text="页面设置...";
this.mnuFilePageSetup.Click+=newSystem.EventHandler(this.mnuFilePageSetup_Click);
//
//ppd
//
this.ppd.AutoScrollMargin=newSystem.Drawing.Size(0,0);
this.ppd.AutoScrollMinSize=newSystem.Drawing.Size(0,0);
this.ppd.ClientSize=newSystem.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=newSystem.Drawing.Point(317,17);
this.ppd.MinimumSize=newSystem.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=newSystem.Drawing.Size(6,14);
this.ClientSize=newSystem.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>
///应用程序的主入口点。
///</summary>

[STAThread]
staticvoidMain()
...{
Application.Run(
newDemoForm());
}


privatevoidmnuFileOpen_Click(objectsender,System.EventArgse)
...{
if(dlgOpen.ShowDialog()==DialogResult.OK)
...{
StreamReadersr
=null;
try
...{
sr
=newStreamReader(dlgOpen.FileName,Encoding.Default,true);
txtDoc.Text
=sr.ReadToEnd();
}

catch
...{
MessageBox.Show(
"打开文件失败!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
}

finally
...{
if(sr!=null)sr.Close();
}

}

}


privatevoidmnuFormatFont_Click(objectsender,System.EventArgse)
...{
dlgFont.Font
=txtDoc.Font;
if(dlgFont.ShowDialog()==DialogResult.OK)
...{
txtDoc.Font
=dlgFont.Font;
}

}


privatevoidpdoc_BeginPrint(objectsender,System.Drawing.Printing.PrintEventArgse)
...{
//MessageBox.Show("开始打印啦");
}


privatevoidpdoc_EndPrint(objectsender,System.Drawing.Printing.PrintEventArgse)
...{
//MessageBox.Show("打印结束");
}


privatevoidpdoc_PrintPage(objectsender,System.Drawing.Printing.PrintPageEventArgse)
...{
Graphicsg
=e.Graphics;
floatlineHeight=txtDoc.Font.GetHeight(g);
intlinesPerPage=(int)(e.MarginBounds.Height/lineHeight);
intcount=0;//本页已打印行数

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;
}

}


privatevoidmnuFilePrint_Click(objectsender,System.EventArgse)
...{
if(dlgPrinterSetup.ShowDialog()==DialogResult.OK)
...{
pdoc.Print();
//开始执行打印
}

}


privatevoidtxtDoc_TextChanged(objectsender,System.EventArgse)
...{

}


privatevoidmnuFilePrintPreview_Click(objectsender,System.EventArgse)
...{
ppd.ShowDialog();
}


privatevoidmnuFilePageSetup_Click(objectsender,System.EventArgse)
...{
MarginsoldMargins
=dlgPageSetup.PageSettings.Margins;
dlgPageSetup.PageSettings.Margins
=newMargins((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#打印实例

    总结,C#打印实例涵盖了从基础的文本打印到复杂的Word文档处理,再到屏幕截图打印和预览功能。通过学习这些实例,开发者可以全面掌握C#的打印技术,为开发各种打印相关的应用打下坚实的基础。无论是简单的报表输出,...

    C#打印实例-全部打印源码实例

    本资源提供了全面的C#打印源码实例,帮助开发者深入理解和掌握如何在C#环境中实现各种打印需求。下面我们将详细探讨C#中的打印技术。 1. **基础概念** - **PrintDocument对象**:这是C#中用于处理打印任务的主要...

    C#直接载入文本文件打印的实例

    在C#编程中,直接载入文本文件并进行打印是一项常见的任务,特别是在处理用户文档、日志记录或者数据输出的场景下。这个实例将详细解释如何实现这一功能,包括读取文本文件、设置打印选项以及实际的打印操作。 首先...

    c#打印预览实例,c#打印预览,winform打印预览实现实例

    1. **C#打印基础**: - C#中的打印功能主要依赖于`System.Drawing.Printing`命名空间,其中包含`PrintDocument`、`PrintPreviewDialog`等关键类。 - `PrintDocument`类是实际的打印对象,它定义了要打印的内容和...

    C#打印实例-全部打印源码实例2019

    总的来说,通过学习和实践“C#打印实例-全部打印源码实例2019”,开发者可以提升自己在C#环境中创建打印解决方案的能力,无论是简单的文本输出还是复杂的报表生成,都能游刃有余。对于那些需要处理大量打印任务的...

    C#打印实例-全部打印源码实例__0525).rar

    这个"**C#打印实例-全部打印源码实例__0525)**"压缩包文件很显然是一个关于C#打印的源代码集合,提供了多种打印相关的示例代码,帮助开发者理解和实现C#中的打印功能。 C#中的打印主要通过System.Drawing和System....

    c#打印实例-分页打印.rar

    总的来说,"c#打印实例-分页打印.rar"这个压缩包提供了一个C#分页打印的实例,通过学习和分析其中的代码,开发者可以掌握如何在C#中有效地处理复杂的打印任务,包括分页、设置和用户交互等。在实际项目中,可以根据...

    C#打印实例-全部打印源码实例201903

    通过学习和实践这些C#打印实例,开发者可以更好地理解和应用C#的打印功能,无论是简单的文本打印,还是复杂的图形和报表打印,都能得心应手。这个压缩包中的源码实例,无疑为初学者提供了宝贵的参考和学习资源。

    C#打印实例--打印商品出库单实例源码(亲测可用)

    在C#编程中,打印功能是一项常见的...通过学习和实践这个C#打印商品出库单的实例,开发者不仅能掌握基本的打印原理,还能深入理解如何在C#环境中整合UI设计、数据处理和硬件交互,为日常的软件开发工作打下坚实基础。

    C#打印操作实例--设置横向或纵向打印实例

    在实际应用中,你可能需要从数据源(如数据库或文本文件)获取打印内容,或者根据用户需求动态调整打印设置。通过结合这些基础知识,你可以构建出满足各种需求的打印功能。 综上所述,C#中的打印操作涉及多个类和...

    实例27 如何直接打印文件C#

    在C#编程环境中,直接打印文件是一项常见的任务,尤其在开发文档处理或报表生成的应用程序时。本实例27将详细讲解如何利用C#的内置功能实现文件的直接打印,无需通过用户界面预览。 首先,我们需要理解C#中与打印...

    C#打印操作实例--设置页码打印范围源码(十分经典)

    本实例将深入探讨如何使用C#来实现设置页码打印范围的功能,这对于创建报告、文档预览或者任何需要用户自定义打印页码范围的场景至关重要。下面我们将详细讨论相关知识点。 1. **System.Drawing.Printing命名空间**...

    C#实现打印功能实例详解

    以下是一步步实现C#打印功能的步骤: 1. 创建PrintDialog实例: ```csharp System.Windows.Forms.PrintDialog PrintDialog1 = new PrintDialog(); ``` 2. 创建PrintDocument实例: ```csharp System.Drawing....

    C#打印前20行实例源码20Print_6.rar

    3. **读取文本文件**:在实例代码中,首先要实现从文件读取文本内容。可以使用`System.IO`命名空间的`StreamReader`类来读取文件。你需要打开文件,读取前20行内容,然后关闭文件。 4. **计算文本布局**:为了准确...

    C#打印实例--打印商品出库单实例源码

    总结起来,实现C#打印商品出库单实例涉及以下步骤: 1. 引入`System.Drawing.Printing`命名空间。 2. 创建`PrintDocument`子类,重写`OnPrintPage`方法。 3. 使用`Graphics`类进行文本和图形绘制。 4. 获取并处理...

    C# 设置模版票据打印实例代码

    在C#编程环境中,开发一个能够设置模板并进行票据打印的应用是一个常见的需求,尤其...通过研究这些文件,你可以深入理解上述知识点的具体实现方式,从而提升自己的C#编程技能,特别是在票据打印和模板设计方面的应用。

Global site tag (gtag.js) - Google Analytics