案例:设计一个编辑处理程序,可以编辑和打印、打印预览文档。
操作方式:
printform1.新建一个项目,其中有两个form(Form1,Form2)
2.在Form1中添加菜单mainMenu1,一个richTextBox1(定义为Public),一个打印文档控件PrintDocument,名称为MyPrintDC。一个状态栏名称为myStatus。
菜单项有:
文件(mnFile){新建(mnNew),打开(mnOpen),保存(mnSave),页面设置(mnPageSetup),打印预览(mnPrintView),打印(mnPint),退出(mnClose)}
编辑(mnEdit){复制(mnCopy),剪切(mnCut),粘贴(mnPaste),查(mnSearch)}
关于(mnAbout)
3.在Form2中添加一个标签:查内容,文本(txtSearch),命令按钮(btnSearch) 查一下个,命令按钮(btnCancel)取消
4.Form1中代码:
加入引用:
using System.IO;
在控件定义阶段中加入:
private StringReader myReader;
private Form2 f;
Form1窗体的构造函数中:
f=new Form2();
f.Owner =this;
f.Hide();
Form1窗体中定义一个方法CheckSave ()
private void CheckSave()
{
if (this.richTextBox1.Text!="")
{
if (MessageBox.Show("是否保存当前文件?","确认",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK)
{
SaveFileDialog svfDialog=new SaveFileDialog();
svfDialog.Filter ="文本文件|*.*|富文本格式文件|*.rtf|所有文件|*.*";
if (svfDialog.ShowDialog()==DialogResult.OK)
{          this.richTextBox1.SaveFile(svfDialog.FileName,RichTextBoxStreamType.PlainText);
}
}
}
}
新建菜单(mnNew):
this.CheckSave();
this.richTextBox1.Clear();
打开菜单(mnOpen):
this.CheckSave();
OpenFileDialog opfDialog=new OpenFileDialog ();
opfDialog.Filter ="文本文件|*.*|富文本格式文件|*.rtf|所有文件|*.*";
if (opfDialog.ShowDialog()==DialogResult.OK)
{      this.richTextBox1.LoadFile(opfDialog.FileName,RichTextBoxStreamType.PlainText);
}
保存菜单(mnSave):
SaveFileDialog svfDialog=new SaveFileDialog();
svfDialog.Filter ="文本文件|*.*|富文本格式文件|*.rtf|所有文件|*.*";
if (svfDialog.ShowDialog()==DialogResult.OK)
{
this.richTextBox1.SaveFile(svfDialog.FileName,RichTextBoxStreamType.PlainText);
}
打印文档控件的PrintPage事件代码(MyPrintDC):
private void MyPrintDC_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//打印文档打印页面事件代码
Graphics myGraphics=e.Graphics;
Font myPrintFont=this.richTextBox1.Font;
//计算一
页行数
float iLinePage=e.MarginBounds.Height/myPrintFont.GetHeight(myGraphics);
int iLineNumber=0;//打印行数
float fyPosition=0;//打印时的纵坐标
float fMarginLeft=e.MarginBounds.Left;//纸页面左边界
float fMarginTop=e.MarginBounds.Top;
string strLine="";
while ((iLineNumber<iLinePage)&&(strLine=myReader.ReadLine())!=null)
{
fyPosition=fMarginTop+iLineNumber*myPrintFont.GetHeight(myGraphics);
myGraphics.DrawString(strLine,myPrintFont,new SolidBrush(Color.Black),fMarginLeft,fyPosition,new StringFormat());
iLineNumber++;
}
if (strLine!=null)
{
e.HasMorePages=true;
}
else
{
e.HasMorePages =false;
}
}
页面设置菜单(mnPageSetup):
PageSetupDialog mypgDialog=new PageSetupDialog();
mypgDialog.Document =this.MyPrintDC;
try
{
mypgDialog.ShowDialog();
}
catch
{
this.MyPrintDC.PrintController.OnEndPrint(this.MyPrintDC,new System.Drawing.Printing.PrintEventArgs());
}
打印预览菜单(mnPrintView):
PrintPreviewDialog myptViewDialog=new PrintPreviewDialog();
myptViewDialog.Document =this.MyPrintDC;
try
{
myptViewDialog.ShowDialog();
}
catch
{
this.MyPrintDC.PrintController.OnEndPrint(this.MyPrintDC,new System.Drawing.Printing.PrintEventArgs());
}
打印菜单(mnPrint):
PrintDialog ptDialog=new PrintDialog();
ptDialog.Document =this.MyPrintDC;
if (ptDialog.ShowDialog()==DialogResult.OK)
{
try
{
this.MyPrintDC.Print();
}
catch
{
this.MyPrintDC.PrintController.OnEndPrint(this.MyPrintDC,new System.Drawing.Printing.PrintEventArgs());
}
}
复制菜单(mnCopy):
if (this.richTextBox1.SelectedText!="")
{
Clipboard.SetDataObject(this.richTextBox1.SelectedText);
}
剪切菜单(mnCut):
if (this.richTextBox1.SelectedText!="")
{
Clipboard.SetDataObject(this.richTextBox1.SelectedText);
this.richTextBox1.SelectedText ="";
}
粘贴菜单(mnPaste):
IDataObject d=Clipboard.GetDataObject();
this.richTextBox1.SelectedText =(string)d.GetData(DataFormats.Text);
查菜单(mnSearch):
f.Show();
富文本框richTextBox1的文件选择改变事件(SelectionChanged)
if (this.richTextBox1.SelectedText!="")
{
}
else
{
}
4.Form2中的代码:
定义一个整型变量:
private int findPlace=0;
命令按钮"查下一
个"代码
if (Search.Text !="")
{
Form1 mainform=(Form1)this.Owner;
if (mainform.richTextBox1.Text.Length>0)
{          if((this.findPlace=mainform.richTextBox1.Text.Search.Text,this.findPlace))==-1)
{
MessageBox.Show("没有到!");
this.findPlace =0;
}
else
{          mainform.richTextBox1.Select(this.Search.Text.Length);
this.findPlace=this.Search.Text.Length;
mainform.Activate();
}
}
}
命令按钮"取消"代码:
this.Hide();
this.Owner.Show();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。