ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:19.14KB ,
资源ID:5068324      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5068324.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(项目一文本编辑器的设计与实现.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

项目一文本编辑器的设计与实现.docx

1、项目一文本编辑器的设计与实现项目一: 文本编辑器的设计与实现【项目背景】文本编辑器有两类:单文档和多文档文本编辑器。单文档文本编辑器一次只能打开一个文件,如果要打开另一个文件,必须关闭当前打开的文件,微软的写字板程序就是单文档字处理程序。多文档文本编辑器允许同时打开多个文件,每个文件占用一个子窗口,微软的Word程序就是多文档字处理程序。本项目主要介绍建立单文档文本编辑器的方法,通过分析现有文本编辑器的功能与操作过程,利用C#开发一个新的文本编辑器。【主要内容与技能要求】(1)会进行复杂窗口设计(2)会对常见的文本编辑功能进行分析与编码实现(3)会设计多文档窗口一、预备知识本项目主要利用Ric

2、hTextBox控件来构成文本编辑区域。1、RichTextBox控件的主要属性属性SelectedText、SelectionLength、SelectionStart: 属性SelectionFont: 属性SelectionColor: 属性Lines: 属性Modified: 事件SelectionChange:事件TextChanged:2、RichTextBox控件的主要方法方法Clear(): 方法Copy()、Cut()、Paste(): 方法SelectAll(): 方法Find(): 方法SaveFile()和LoadFile(): 方法Undo(): 方法Redo():

3、二、功能设计与实现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,Event

4、Args e) richTextBox1.Paste(); /粘贴private void menuItemEditUndo_Click(object sender,EventArgs e) richTextBox1.Undo(); /撤销private void menuItemEditRedo_Click(object sender,EventArgs e) richTextBox1.Redo(); /恢复2、存取文件功能 文本编辑器都应具有文件存取功能,菜单顶级菜单项“文件”的弹出菜单中一般包括如下菜单项:新建、打开、关闭、保存和另存为等。需要用到打开文件对话框(OpenFileDial

5、og控件)和保存文件对话框(SaveFileDialog控件)。和两个对话框的常用属性和方法:属性Filter:例如Filter=“纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*” 属性FilterIndex: 属性FileName: 属性InitialDirectory: 属性DefaultExt: 方法ShowDialog(): 存取文件功能实现如下: 把OpenFileDialog和SaveFileDialog控件放到窗体中。为菜单增加顶级菜单项:文件,为其弹出菜单增加菜单项:新建、打开.、保存.、另存为.、退出。修改这些菜单项的Name属性分别为:mainMenuFi

6、le、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 menuItemFile

7、Open_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(saveFil

8、eDialog1.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) richTextBox1.SaveFile(s_FileNam

9、e, RichTextBoxStreamType.PlainText); else menuItemFileSaveAs_Click(sender,e);private void menuItemExit_Click( /退出菜单项 object sender,EventArgs e) Close(); 3、 修改字体 为修改使用的字体,可打开字体对话框FontDialog,选择指定字体。可以按两种方式修改字体,如果未选中文本,表示以后键入的字符将按选定字体输入。如果选中文本,则仅修改选定文本的字体。修改字符颜色也根据同样原则。修改字体要用到FontDialog控件 可以用FontDialog

10、对话框选定指定字体,FontDialog控件和OpenDialog控件的属性和方法基本相同,这里只介绍属性Font,它代表用FontDialog对话框选定的字体。 修改字体实现方法: 放FontDialog控件到窗体,属性Name=fontDialog1。为菜单增加顶级菜单项:格式,属性Name为mainMenuModel,为其弹出菜单增加菜单项:字体,属性Name为menuItemModelFont,为菜单“格式|字体”菜单项增加单击事件处理函数如下: private void menuItemModelFont_Click( object sender,EventArgs e) if(fo

11、ntDialog1.ShowDialog()=DialogResult.OK) richTextBox1.SelectionFont=fontDialog1.Font;4、About对话框 单击菜单项目|添加Windows窗体菜单项,弹出对话框,添加一个窗体,修改formAbout窗体属性StartPosition=CenterParent,修改属性MaximizeBox=False,MinimizeBox=False,属性FormBorderStyle=FixedDialog 标题为“确定”按钮单击事件处理函数如下:private void button1_Click(object send

12、er,EventArgs e) Close(); 为菜单增加顶级菜单项:帮助,为其弹出菜单增加标题为“关于”的菜单项,属性Name为menuItemAbout。菜单“帮助|关于”菜单项单击事件处理函数如下: private void menuItemAbout_Click( object sender,EventArgs e) formAbout AboutDialog=new formAbout(); AboutDialog.ShowDialog(this);/打开模式对话框 /注意不能使用Show()函数,它打开非模式对话框 5、 文本编辑器查找替换功能首先介绍模式对话框和非模式对话框的概

13、念。并使用非模式对话框在文本编辑器中实现查找和替换功能。 (1)模式对话框和非模式对话框 模式对话框和非模式对话框的区别是: 两类对话框本质上都是窗体,是Form类的派生类,只是打开时使用的方法不一样,打开模式对话框,使用方法ShowDialog(),而打开非模式对话框,使用方法Show()。 (2)查找替换功能的实现 建立新窗体,窗体文件名称为formFindReplace.cs,作为查找替换对话框。窗体类名也为formFindReplace,为formFindReplace类增加变量:Form1 MainForm1; 属性StartPosition=CenterParent,Maximiz

14、eBox=False,MinimizeBox=False, FormBorderStyle=FixedDialog, Text=“查找和替换” 修改formFindReplace类构造函数如下,增加的参数form1是主窗体属性Name的值。public formFindReplace(Form1 form1) InitializeComponent(); MainForm1=form1;/新增语句,记录主窗体属性Name的值/有了Form1引用,可以在formFindReplace类中调用Form1类的公有方法 查找替换对话框中标题为“查找下一个”按钮单击事件函数如下:private void

15、 buttonFind_Click(object sender,EventArgs e) if(textBox1.Text.Length!=0) /MainForm1.FindRichTextBoxString方法见后面定义 MainForm1.FindRichTextBoxString(textBox1.Text); else MessageBox.Show(“查找字符串不能为空”, 提示,MessageBoxButtons.OK); /MessageBox是对话框 查找替换对话框中标题为“替换查到字符”按钮单击事件函数如下:private void buttonReplace_Click(

16、object sender,EventArgs e) if(textBox2.Text.Length!=0) MainForm1.ReplaceRichTextBoxString(textBox2.Text); else / MainForm1.ReplaceRichTextBoxString后面定义 MessageBox.Show(“替换字符串不能为空”, 提示, MessageBoxButtons.OK); 为Form1类增加变量:int FindPostion=0,该变量用来记录下一次查找的开始位置。为Form1窗体菜单的编辑顶级菜单项的弹出菜单增加菜单项:查找和替换,属性Name为me

17、nuItemFindReplace。查找和替换菜单项单击事件处理函数如下: private void menuItemFindReplace_Click( object sender,EventArgs e) FindPostion=0; /下句中的this是Form1类对象引用formFindReplace FindReplaceDialog=new formFindReplace(this); FindReplaceDialog.Show(); /打开非模式对话框使用Show()方法 定义FindRichTextBoxString方法 public void FindRichTextBox

18、String(string FindString) if(FindPostion=richTextBox1.Text.Length) MessageBox.Show(“已到文本底部,再次查找将从文本开始处查找”,提示,MessageBoxButtons.OK); FindPostion=0; /下次查找的开始位置 return; FindPostion=richTextBox1.Find(FindString,FindPostion, RichTextBoxFinds.MatchCase);if(FindPostion=-1)/-1表示未找到匹配字符串,提示用户 MessageBox.Show

19、(未找到匹配字符串,再次查找将从文本开始处查找,提示, MessageBoxButtons.OK); FindPostion=0; /下次查找的开始位置 else /找到匹配字符串 richTextBox1.Focus(); /主窗体成为注视窗口 FindPostion+=FindString.Length; /下次查找的开始位置在此次找到字符串之后替换字符串的方法 :public void ReplaceRichTextBoxString( string ReplaceString) if(richTextBox1.SelectedText.Length!=0) richTextBox1.S

20、electedText=ReplaceString; /替换被选定的字符串 6、对话框MessageBox MessageBox.Show(this,要保存当前更改吗?,保存更改吗?,MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question); 7、 提示保存已被修改的文件 为Form1类增加一个bool变量bSave=false作为标记,用来跟踪控件RichTextBox中的文本内容是否被修改。在程序开始运行、建立和打开一个新文件后,bSave=false,表示如果关闭当前文件,不必提示用户保存当前文件。当RichTextBox控件中的文本被

21、修改,将激活RichTextBox控件TextChanged事件,在该事件处理函数中,使bSave=true,表示关闭当前文件前,要询问用户是否保存当前已被修改的文件。首先在主窗体Form1类中增加一个函数,其功能是如果检查到当前文件已被修改,用对话框询问用户是否保存当前文件,根据用户的选择作相应的处理,该函数返回true,表示继续操作, 该函数返回false,表示忽略此次操作。之所以要增加这个函数是因为有三处要用到此函数。该函数定义如下: public bool IfSaveOldFile() bool ReturnValue=true;if(bSave) System.Windows.Fo

22、rms.DialogResult dr; dr=MessageBox.Show(this,“要保存当前更改吗?”, 保存更改吗?, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); switch(dr) /根据用户选择做相应处理 case System.Windows.Forms.DialogResult.Yes: bSave=false;/保存文件后,应使bSave为false if(s_FileName.Length!=0) richTextBox1.SaveFile(s_FileName, RichTextBoxStream

23、Type.PlainText); else SaveFileDialog saveFileDialog1= new SaveFileDialog(); if(saveFileDialog1.ShowDialog()= DialogResult.OK) s_FileName=saveFileDialog1.FileName; richTextBox1.SaveFile(s_FileName, RichTextBoxStreamType.PlainText); /返回true通知调用本方法的程序本次操作继续ReturnValue=true; break;/单击了no按钮,不保存case Syste

24、m.Windows.Forms.DialogResult.No: bSave=false; ReturnValue=true; break; /单击了Cancel按钮case System.Windows.Forms.DialogResult.Cancel: ReturnValue=false; break; /返回false,通知调用本方法的程序,本次操作取消return ReturnValue;在菜单“文件|新建”和“文件|打开”菜单项的事件函数的第1条语句前增加如下语句: if(!IfSaveOldFile() /如果返回false本次操作取消 return;修改菜单“文件|保存.”菜单

25、项单击事件处理函数如下:private void menuItemSaveFile_Click( object sender,EventArgs e) if(s_FileName.Length!=0) bSave=false; richTextBox1.SaveFile(s_FileName, RichTextBoxStreamType.PlainText);else menuItemSaveAs_Click(sender,e); 修改菜单“文件|另存为.”菜单项单击事件函数如下:private void menuItemSaveAs_Click( object sender,EventArg

26、s e) SaveFileDialog saveFileDialog1=new SaveFileDialog();saveFileDialog1.Filter=纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*;saveFileDialog1.FilterIndex=1;if(saveFileDialog1.ShowDialog()=DialogResult.OK) s_FileName=saveFileDialog1.FileName; richTextBox1.SaveFile(s_FileName, RichTextBoxStreamType.PlainText); bSa

27、ve=false; 为RichTextBox控件TextChanged事件增加事件函数如下:private void richTextBox1_TextChanged( object sender,EventArgs e) bSave=true; 窗体Form1的FormClosing事件是在关闭窗口之前产生的事件,此时,窗体中的控件还存在,还可以保存修改的内容,也可以不退出。增加Closing事件的事件处理函数如下: private void Form1_FormClosing(object sender, FormClosingEventArgs e) if(!IfSaveOldFile() e.Cancel=true; /不退出,程序继续运行 三、学生工作任务设计一个文本编辑器,功能要求至少要有新建、打开、保存、另存为、页面设置、打印、退出、撤消、剪切、复制、粘贴、删除、查找、替换等,可以通过查阅资料,对以上功能进行补充。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1