.net文本编辑器的实现

  以前在用计算机上自带的文本编辑器啊,图片浏览器之类的小工具的时候,会觉得好像很厉害的样子,完全没想到自己也能做出这种东西来。而做了这次实验之后,才发现,其实这种工具很容易实现。

  就拿文本编辑器来说,它最终实现的成果和我们计算机上的写字板是一样的。

该文档编辑器完成了以下功能:文件操作(新建,打开,保存,退出)、编辑操作(复制,剪切,粘贴,全选)、查找与替换(设计查找替换窗口,支持查找替换操作)、格式操作(字体,颜色)等。界面设计考虑美观,操作简便等问题,具有工具栏,右键菜单等。

实现过程:

一.创建主体框架:建立程序的主要界面后,系统自动生成界面的主要窗口生成代码。对于每个按钮的的代码段中,分别添加事件触发的处理代码。用每次新建一个tabpage的形式来产生新建窗口,同时往tabpage里封装一个richtextbox和两个label。Richtextbox用来进行文字的编辑,label一个用来标记文档的名称,一个用来标记文档的保存状态。

一.创建主体框架:建立程序的主要界面后,系统自动生成界面的主要窗口生成代码。对于每个按钮的的代码段中,分别添加事件触发的处理代码。用每次新建一个tabpage的形式来产生新建窗口,同时往tabpage里封装一个richtextbox和两个label。Richtextbox用来进行文字的编辑,label一个用来标记文档的名称,一个用来标记文档的保存状态。

二.1.文件操作

    a.新建:创建一个tabcontrol容器,每次新建则新产生一个tabpage页,注意这个tabpage页里封装了一个richtextbox控件和两个label控件。Richtextbox用来进行文字的编辑,label一个用来标记文档的名称,一个用来标记文档的保存状态。

    b.打开:以同样的方式产生一个空白新建页面,以openfiledialog窗口产生打开窗口。以文件流的形式读入文件到新页面。

    c.保存、另存为:保存为和另存为的思路其实差不多。只需要在保存前判定一下该文档的label2的text是“新建、未保存”,还是“打开”。若是前者,则直接保存,不需要弹出savefiledialog窗口。若是后者则要使用savefiledialog来另存为。同时为form编写了一个textchange事件,若是打开的文档发生了修改则另存为,否则就直接保存。

    d.退出:退出前先判定一下现有的文件是否有未保存的,若有,则弹出messagebox消息框,提醒用户是否进行保存。若保存,则以以上方式进行保存,若不则直接退出。

   2.编辑操作

     a.复制:将文档上选择的文字复制到剪贴板上即可,有直接的方法可用:Cilpboard.SetDataObject(r.SelectedText,true)    (r为当前的richtextbox)

b. 剪切:用r.Cut()实现剪切功能即可。  (r为当前的richtextbox)。

c. 粘贴:首先判断一下剪贴板上是否有文字,若有则r.Paste( )即可实现粘贴功能。

d. 全选:使用r.SelectAll()即可实现全选。

e. 清空:首先进行全选,然后使用r.SelectedText=””;即可将文字清空。

3.格式操作

a. 字体:使用已有的fontdialog窗口即可,将r.selectionfont赋值为fontdialog.font即可。

b. 颜色:使用已有的colordialog窗口即可,将r.selectionfont赋值为colordialog.color即可。

c. 背景色:同样使用已有的colordialog窗口即可,将r.backcolor赋值为colordialog.color即可。

d.  粗体:首先判断文字现有字体是否为粗体,若是则将其变为常规字体,若不是则变为粗体。

e.  斜体:同粗体的设计。

f:  下划线:同粗体的设计。

g. 左对齐:使用r.SelectionAlignment= HorizontalAlignment.Left;即可。

h.  居中:使用r.SelectionAlignment= HorizontalAlignment.Center;即可。

i.   右对齐:使用r.SelectionAlignment= HorizontalAlignment.Right;即可。

4.替换与查找

首先新建立一个窗口作为查找替换的窗口。这个窗口包括两个textbox分别用来写入要查找的字符串和想要替换的字符串。四个按钮,分别是“查找,查找下一个,全部替换,取消”。

a.      查找:获取要查找的字符串,首先判断是否存在于文档中,若没有,则弹出消息框提示字符串不存在。若有,则获取该字符串所在位置,将从这一位置开始字符串长度为长度的字符串都设为focus表示已查找到。

b.     查找下一个:从刚才查找到的位置开始继续查找,若找到了则将其设为focus。

c.      替换:获取想要替换的字符串,将r.selectedtext赋值为该字符串。

d.     取消:直接关闭该窗口。

5.附加功能

a.  插入系统时间:往tabpage中新插入一个label,label的text即为系统时间,datetime.now。

b.  统计字数:往tabpage中新插入一个label,label的text即为字数。统计字数时首先讲文字全选,此时r.selectionlength即为字数。

c.  右键菜单:右键菜单用contextmenustrip来实现。

  总之,通过这次实验,发现原来我们专业也挺好玩的,可以做出一些让自己兴奋的小程序,受益良多。

  


你可能感兴趣的:(.net文本编辑器的实现)