=null))
{
//计算出要打印的下一行所基于页面的位置
yPosition=topMargin+(count*printFont.GetHeight(ev.Graphics));
//打印出richTextBox1中的下一行内容
ev.Graphics.DrawString(line,printFont,myBrush,leftMargin,yPosition,newStringFormat());
count++;
}
//判断如果还要下一页,则继续打印
if(line!
=null)
ev.HasMorePages=true;
else
ev.HasMorePages=false;
myBrush.Dispose();
usingSystem;
usingSystem.Drawing;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Windows.Forms;
usingSystem.Data;
usingSystem.IO;
usingSystem.Drawing.Printing;
publicclassForm1:
Form
{
privateRichTextBoxrichTextBox1;
privateButtonbutton1;
privateButtonbutton2;
privateButtonbutton3;
privateButtonbutton4;
privateButtonbutton5;
privateOpenFileDialogopenFileDialog1;
privateSaveFileDialogsaveFileDialog1;
privatePrintDialogprintDialog1;
privatePrintDocumentThePrintDocument;
privatePrintPreviewDialogprintPreviewDialog1;
privateStringReadermyReader;
privateSystem.ComponentModel.Containercomponents=null;
publicForm1()
{
//初始化窗体中的各个组件
InitializeComponent();
}
//清除程序中使用多的资源
protectedoverridevoidDispose(booldisposing)
{
if(disposing)
{
if(components!
=null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
privatevoidInitializeComponent()
{
richTextBox1=newRichTextBox();
button1=newButton();
button2=newButton();
button3=newButton();
button4=newButton();
button5=newButton();
saveFileDialog1=newSaveFileDialog();
openFileDialog1=newOpenFileDialog();
printPreviewDialog1=newPrintPreviewDialog();
printDialog1=newPrintDialog();
ThePrintDocument=newPrintDocument();
ThePrintDocument.PrintPage+=newPrintPageEventHandler(ThePrintDocument_PrintPage);
SuspendLayout();
richTextBox1.Anchor=AnchorStyles.None;
richTextBox1.Name="richTextBox1";
richTextBox1.Size=newSize(448,280);
richTextBox1.TabIndex=0;
richTextBox1.Text="";
button1.Anchor=AnchorStyles.None;
button1.Location=newPoint(41,289);
button1.Name="button1";
button1.Size=newSize(48,30);
button1.TabIndex=1;
button1.Text="打开";
button1.Click+=newSystem.EventHandler(button1_Click);
button2.Anchor=AnchorStyles.None;
button2.Location=newPoint(274,288);
button2.Name="button2";
button2.Size=newSize(48,30);
button2.TabIndex=4;
button2.Text="预览";
button2.Click+=newSystem.EventHandler(button2_Click);
button3.Anchor=AnchorStyles.None;
button3.Location=newPoint(108,288);
button3.Name="button3";
button3.Size=newSize(48,30);
button3.TabIndex=2;
button3.Text="保存";
button3.Click+=newSystem.EventHandler(button3_Click);
button4.Anchor=AnchorStyles.None;
button4.Location=newPoint(174,288);
button4.Name="button4";
button4.Size=newSize(80,30);
button4.TabIndex=3;
button4.Text="打印机设置";
button4.Click+=newSystem.EventHandler(button4_Click);
button5.Anchor=AnchorStyles.None;
button5.Location=newPoint(345,288);
button5.Name="button5";
button5.Size=newSize(48,30);
button5.TabIndex=5;
button5.Text="打印";
button5.Click+=newSystem.EventHandler(button5_Click);
saveFileDialog1.DefaultExt="*.txt";
saveFileDialog1.FileName="file.txt";
saveFileDialog1.InitialDirectory="c:
\\";
saveFileDialog1.Title="另存为!
";
openFileDialog1.DefaultExt="*.txt";
openFileDialog1.FileName="file.txt";
openFileDialog1.InitialDirectory="c:
\\";
openFileDialog1.Title="打开文本文件!
";
AutoScaleBaseSize=newSize(6,14);
ClientSize=newSize(448,325);
this.Controls.Add(button1);
this.Controls.Add(button2);
this.Controls.Add(button3);
this.Controls.Add(button4);
this.Controls.Add(button5);
this.Controls.Add(richTextBox1);
this.MaximizeBox=false;
this.Name="Form1";
this.Text="C#来操作文本文件";
this.ResumeLayout(false);
}
staticvoidMain()
{
Application.Run(newForm1());
}
privatevoidbutton1_Click(objectsender,System.EventArgse)
{
try
{
if(openFileDialog1.ShowDialog()==DialogResult.OK)
{
FileStreamfs=newFileStream(openFileDialog1.FileName,FileMode.Open,FileAccess.Read);
StreamReaderm_streamReader=newStreamReader(fs);
//使用StreamReader类来读取文件
m_streamReader.BaseStream.Seek(0,SeekOrigin.Begin);
//从数据流中读取每一行,直到文件的最后一行,并在richTextBox1中显示出内容
this.richTextBox1.Text="";
stringstrLine=m_streamReader.ReadLine();
while(strLine!
=null)
{
this.richTextBox1.Text+=strLine+"\n";
strLine=m_streamReader.ReadLine();
}
//关闭此StreamReader对象
m_streamReader.Close();
}
}
catch(Exceptionem)
{
Console.WriteLine(em.Message.ToString());
}
}
privatevoidbutton3_Click(objectsender,System.EventArgse)
{
try
{
//获得另存为的文件名称
if(saveFileDialog1.ShowDialog()==DialogResult.OK)
{
//创建一个文件流,用以写入或者创建一个StreamWriter
FileStreamfs=newFileStream(@saveFileDialog1.FileName,FileMode.OpenOrCreate,FileAccess.Write);
StreamWriterm_streamWriter=newStreamWriter(fs);
m_streamWriter.Flush();
//使用StreamWriter来往文件中写入内容
m_streamWriter.BaseStream.Seek(0,SeekOrigin.Begin);
//把richTextBox1中的内容写入文件
m_streamWriter.Write(richTextBox1.Text);
//关闭此文件
m_streamWriter.Flush();
m_streamWriter.Close();
}
}
catch(Exceptionem)
{
Console.WriteLine(em.Message.ToString());
}
}
privatevoidbutton4_Click(objectsender,System.EventArgse)
{
printDialog1.Document=ThePrintDocument;
printDialog1.ShowDialog();
}
//预览打印文档
privatevoidbutton2_Click(objectsender,System.EventArgse)
{
try
{
stringstrText=richTextBox1.Text;
myReader=newStringReader(strText);
PrintPreviewDialogprintPreviewDialog1=newPrintPreviewDialog();
printPreviewDialog1.Document=ThePrintDocument;
printPreviewDialog1.FormBorderStyle=FormBorderStyle.Fixed3D;
printPreviewDialog1.ShowDialog();
}
catch(Exceptionexp)
{
Console.WriteLine(exp.Message.ToString());
}
}
//打印richTextBox1中的内容
privatevoidbutton5_Click(objectsender,System.EventArgse)
{
printDialog1.Document=ThePrintDocument;
stringstrText=richTextBox1.Text;
myReader=newStringReader(strText);
if(printDialog1.ShowDialog()==DialogResult.OK)
{
ThePrintDocument.Print();
}
}
protectedvoidThePrintDocument_PrintPage(objectsender,PrintPageEventArgsev)
{
floatlinesPerPage=0;
floatyPosition=0;
intcount=0;
floatleftMargin=ev.MarginBounds.Left;
floattopMargin=ev.MarginBounds.Top;
stringline=null;
FontprintFont=richTextBox1.Font;
SolidBrushmyBrush=newSolidBrush(Color.Black);
//计算每一页打印多少行
linesPerPage=ev.MarginBounds.Height/printFont.