项目一:文本编辑器的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程: C# Windows程序设计学年第_ _学期第周月日教学内容备注
项目一:文本编辑器的设计与实现
【项目背景】
文本编辑器有两类:单文档和多文档文本编辑器。单文档文本编辑器一次只能打开一个文件,如果要打开另一个文件,必须关闭当前打开的文件,微软的写字板程序就是单文档字处理程序。多文档文本编辑器允许同时打开多个文件,每个文件占用一个子窗口,微软的Word程序就是多文档字处理程序。本项目主要介绍建立单文档文本编辑器的方法,通过分析现有文本编辑器的功能与操作过程,利用C#开发一个新的文本编辑器。
【主要内容与技能要求】
(1)会进行复杂窗口设计
(2)会对常见的文本编辑功能进行分析与编码实现
(3)会设计多文档窗口
一、预备知识
本项目主要利用RichTextBox控件来构成文本编辑区域。
1、RichTextBox控件的主要属性
属性SelectedText、SelectionLength、SelectionStart:
属性SelectionFont:
属性SelectionColor:
属性Lines:
属性Modified:
事件SelectionChange:
事件TextChanged:
2、RichTextBox控件的主要方法
方法Clear():
方法Copy()、Cut()、Paste():
方法SelectAll():
方法Find():
方法SaveFile()和LoadFile():
课程: C# Windows程序设计学年第_ _学期第周月日教学内容备注方法Undo():
方法Redo():
二、功能设计与实现
1、剪贴板功能
放RichTextBox控件到窗体。属性Name=richTextBox1,Dock=Fill,Text=""。
private void menuItemEditCut_Click(object sender,EventArgs e)
{ richTextBox1.Cut(); } //剪切
private void menuItemEditCopy_Click(object sender,EventArgs e)
{ richTextBox1.Copy(); } //拷贝
private void menuItemEditPaste_Click(object sender,EventArgs e)
{ richTextBox1.Paste(); } //粘贴
private void menuItemEditUndo_Click(object sender,EventArgs e)
{ richTextBox1.Undo(); } //撤销
private void menuItemEditRedo_Click(object sender,EventArgs e)
{ richTextBox1.Redo(); } //恢复
2、存取文件功能
文本编辑器都应具有文件存取功能,菜单顶级菜单项“文件”的弹出菜单中一般包括如下菜单项:新建、打开、关闭、保存和另存为等。需要用到打开文件对话框(OpenFileDialog控件)和保存文件对话框(SaveFileDialog控件)。和
两个对话框的常用属性和方法:
属性Filter:例如Filter=“纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*”
属性FilterIndex:
属性FileName:
属性InitialDirectory:
属性DefaultExt:
方法ShowDialog():
存取文件功能实现如下:
课程: C# Windows程序设计学年第_ _学期第周月日教学内容备注
把OpenFileDialog和SaveFileDialog控件放到窗体中。为菜单增加顶级菜单项:文件,为其弹出菜单增加菜单项:新建、打开...、保存...、另存为...、退出。修改这些菜单项的Name属性分别为:mainMenuFile、menuItemFileNew、menuItemFileOpen、menuItemFileSave、menuItemFileSaveAs、menuItemFileExit。
为Form1类中定义变量:string s_FileName=“”,记录当前编辑的文件名
private void menuItemFileNew_Click(object sender,EventArgs e) //新建文件菜单项
{ richTextBox1.Text=""; //或richTextBox1.Clear();
s_FileName=""; //新建文件没有文件名。
}
private void menuItemFileOpen_Click( //打开文件菜单项
object sender,EventArgs e)
{ if(openFileDialog1.ShowDialog()==DialogResult.OK)
{ s_FileName=openFileDialog1.FileName;
richTextBox1.LoadFile(openFileDialog1.FileName,
RichTextBoxStreamType.PlainText);
}
}
private void menuItemFileSaveAs_Click( //另存为菜单项
object sender,EventArgs e)
{ if(saveFileDialog1.ShowDialog()==DialogResult.OK)
{ s_FileName=saveFileDialog1.FileName;
richTextBox1.SaveFile(saveFileDialog1.FileName,
RichTextBoxStreamType.PlainText);
} //注意存取文件类型应一致。
}
private void menuItemSaveFile_Click( //保存文件菜单项
object sender,EventArgs e)
{ if(s_FileName.Length!=0)