C#WinForm程序设计之升级版文本编辑器


前面的那篇博文讲解了一个简单版本的文本编辑器,实现了一些最简单的功能。那么这里我们对那个文本编辑器做一个升级吧!既然是升级版,那么就要做的像Word一点咯!首先我们来看一下我设计的界面吧!


文件(F):

编辑(E):

格式(O):

怎么样,这个界面是不是有点像Word了?图中的小图标下载地址为【小图标】。如果你有兴趣跟我一起做下去,那也把这个界面设计出来吧(顶部的有下拉功能的菜单我们先不管,功能跟中间部分的ToolStrip功能基本是一样的),然后继续看博客吧!

我们从左到右实现中间的ToolStrip栏的功能!

首先我们实现中间ToolStrip栏的第一个按钮(Name为openFileToolStripButton)的功能:打开读取文件内容并把文本内容填充到下面的RichTextBox里面吧!监听其单击事件,代码如下:
定义两个全局变量

        private String title = "Untitled";  //保存打开的文件的标题Encoding ec=Encoding.UTF8;          //设置文本的格式为 UTF-8

监听点击事件:

        private void openFileToolStripButton_Click(object sender, EventArgs e){/*** openFileDialog1 是在设计界面拖出来的控件 OpenFileDialog* * 主要是打开 rtf 格式的文件*/openFileDialog1.Filter = "文本文件|*.txt;*.html;*.docx;*.doc;*.rtf|所有文件|*.*"; //文件打开的过滤器if (openFileDialog1.ShowDialog() == DialogResult.OK){title = openFileDialog1.FileName;this.Text = title;                  //显示打开的文件名richTextBox1.Modified = false;string ext = title.Substring(title.LastIndexOf(".") + 1);//获取文件格式ext = ext.ToLower();FileStream fs = new FileStream(title, FileMode.Open, FileAccess.Read);StreamReader sr = new StreamReader(fs, ec);if (ext == "rtf")  //如果后缀是 rtf 加载文件进来{richTextBox1.LoadFile(title, RichTextBoxStreamType.RichText);}else{richTextBox1.Text = sr.ReadToEnd();}fs.Close();sr.Close();}}

点击打开文件然后读取文件成功后的截图为:

打开读取文件测试成功了,接下来看一看修改文件然后实现保存功能:

        private void toolStripButton3_Click(object sender, EventArgs e){if (title == "Untitled")//如果是不是打开文件然后编辑的话 点击保存就相当于另存为咯另存为AToolStripMenuItem_Click(sender, e);//这个另存为的按钮是在顶部的菜单栏else{string ext = title.Substring(title.LastIndexOf(".") + 1);ext = ext.ToLower();if (ext == "rtf")//按照不同的格式保存文件richTextBox1.SaveFile(title, RichTextBoxStreamType.RichText);else if (ext == "doc" || ext == "txt")richTextBox1.SaveFile(title, RichTextBoxStreamType.PlainText);else if (ext == "uni")richTextBox1.SaveFile(title, RichTextBoxStreamType.UnicodePlainText);elserichTextBox1.SaveFile(title, RichTextBoxStreamType.PlainText);richTextBox1.Modified = false;}}private void 另存为AToolStripMenuItem_Click(object sender, EventArgs e){/*** saveFileDialog1 同样也是设计窗体界面拖出来的控件*/if (saveFileDialog1.ShowDialog() == DialogResult.OK){title = saveFileDialog1.FileName;this.Text = title;switch (saveFileDialog1.FilterIndex){case 1:richTextBox1.SaveFile(title, RichTextBoxStreamType.RichText);break;case 2:richTextBox1.SaveFile(title, RichTextBoxStreamType.PlainText);break;case 3:richTextBox1.SaveFile(title, RichTextBoxStreamType.UnicodePlainText);break;default:richTextBox1.SaveFile(title, RichTextBoxStreamType.PlainText);break;}richTextBox1.Modified = false;}}

这样就可以修改文本内容啦,做一下简单的测试:
打开文件并输入修改的内容:

这时候点击保存按钮,结果为:

可见修改成功了!

接下来就是对字体的加粗,斜体以及下划线了,(七)C#之WinForm程序设计-简单版文本编辑器 这篇博文有详细的过程啦,这里我们就给出代码吧:

        private void boldToolStripButton_Click(object sender, EventArgs e){//加粗richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, richTextBox1.SelectionFont.Style ^ FontStyle.Bold);}private void toolStripButton7_Click(object sender, EventArgs e){//倾斜richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, richTextBox1.SelectionFont.Style ^ FontStyle.Italic);}private void toolStripButton8_Click(object sender, EventArgs e){//加下划线richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, richTextBox1.SelectionFont.Style ^ FontStyle.Underline);}

在加下划线之后就是剪切,赋值和粘贴了。这三个功能也是很简单的,只要调用RichTextBox的Cut(), Copy()和Paste()方法即可,代码如下:

        private void cutToolStripButton_Click(object sender, EventArgs e){richTextBox1.Cut();//剪切}private void toolStripButton10_Click(object sender, EventArgs e){richTextBox1.Copy();//复制}private void toolStripButton11_Click(object sender, EventArgs e){richTextBox1.Paste();//粘贴}

然后就是插入图片,监听其点击事件,代码如下:

        private void toolStripButton12_Click(object sender, EventArgs e){Bitmap bmp;if (openImageDialog.ShowDialog() == DialogResult.OK){string filename = openImageDialog.FileName;try{bmp = new Bitmap(filename);//文件转化为 BitmapClipboard.SetDataObject(bmp);DataFormats.Format dft = DataFormats.GetFormat(DataFormats.Bitmap);if (this.richTextBox1.CanPaste(dft))richTextBox1.Paste(dft);    //图片加入到富文本中去}catch (Exception ex){MessageBox.Show("图片插入失败" + ex.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);}}}

测试结果如下:

插入图片成功,接下来就是改变字体颜色了,只要拖一个ColorDialog基本就OK了,代码如下:

        private void toolStripButton15_Click(object sender, EventArgs e){/*** colorDialog1 是设计界面拖出来的控件*/if (colorDialog1.ShowDialog() == DialogResult.OK)richTextBox1.SelectionColor = colorDialog1.Color;//直接设置选中的字段的颜色}

接下来的撤销与重做功能也是很简单的实现,RichTextBox控件都有封装方法:

        private void toolStripButton19_Click(object sender, EventArgs e){richTextBox1.Undo();//撤销}private void toolStripButton20_Click(object sender, EventArgs e){richTextBox1.Redo();//重做}

接着就是左对齐,居中对齐,右对齐,在上一个简单版本的文本编辑器都有讲过((七)C#之WinForm程序设计-简单版文本编辑器)。直接给出代码:

        private void toolStripButton21_Click(object sender, EventArgs e){this.richTextBox1.SelectionAlignment = HorizontalAlignment.Left;}private void toolStripButton22_Click(object sender, EventArgs e){this.richTextBox1.SelectionAlignment = HorizontalAlignment.Center;}private void toolStripButton23_Click(object sender, EventArgs e){this.richTextBox1.SelectionAlignment = HorizontalAlignment.Right;}

然后的 大 小 按钮就是用来调整字体大小的,方法也很简单,代码如下:

        private void toolStripButton25_Click(object sender, EventArgs e){ZoomInOut(false);//增加}private void toolStripButton26_Click(object sender, EventArgs e){ZoomInOut(true);//减小}private void ZoomInOut(bool IsZoomOut){float zoom = 0;zoom = this.richTextBox1.ZoomFactor;if (IsZoomOut)zoom -= (float)0.1;elsezoom += (float)0.1;if (zoom < 0.64 || zoom > 64)return;this.richTextBox1.ZoomFactor = zoom;}

看一下效果图:

最后两个就是设置 FontFamily 和 FontSize了,代码如下:

        private void cbFamily_SelectedIndexChanged(object sender, EventArgs e){//Font Familyif (this.cbFamily.SelectedItem == null) return;string ss = this.cbFamily.SelectedItem.ToString().Trim();richTextBox1.SelectionFont = new Font(ss, richTextBox1.SelectionFont.Size, richTextBox1.SelectionFont.Style);}private void cbSize_SelectedIndexChanged(object sender, EventArgs e){//设置字体大小if (cbSize.SelectedItem == null) return;int size = Convert.ToInt32(this.cbSize.SelectedItem.ToString().Trim());richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont.FontFamily, size, richTextBox1.SelectionFont.Style);}

测试效果如下:

以上就是这个升级版本的文本编辑器的全部内容了
源码地址【升级版文本编辑器】

没想到这个资源被CSDN设置了50C币,我还改不了。。。

微信公众号回复【资源】,就可以下载哦~~~~~~

和我一起交流技术,和生活。嘿嘿~~~

(九)C#之WinForm程序设计-升级版文本编辑器相关推荐

  1. C语言程序设计-简易文本编辑器

    第一部分:引言 简易文本编辑器是一个面向用户的系统服务程序,广泛用于源程序的输入.删除.替换.查找.修改等一系列操作,甚至用于报刊和书籍的编辑排版以及办公室的公文书信的起草和润色,是一个比较实用的应用 ...

  2. C/C++ 实现一个简单的文本编辑器(windows程序设计)

    一.实现目的 为了更好的学习QT中的窗口.句柄等概念,先对Windows编程进行了大体了解,通过一个简单文本编辑器的实现,来加深对这些基本概念的理解. 二. 基本功能 支持拷贝粘贴 支持文件保存(保存 ...

  3. winform html编辑器控件,一个WinForm富文本编辑器控件

    WinForm 上的富文本编辑器简直不要太少,虽然有 RichEdit,但是这个鬼极难用而且复杂,在插入图片和表格的时候简直抓狂,还要理解复杂的 RTF 格式. 我希望有一个文本控件,包括基本的格式设 ...

  4. C++程序设计:原理与实践(进阶篇)15.6 实例:一个简单的文本编辑器

    15.6 实例:一个简单的文本编辑器 列表最重要的性质就是可以在不移动元素的情况下对其进行插入或删除操作.下面我们通过一个例子来说明这一点.考虑应该如何在文本编辑器中表示一个文本文件中的字符.所选用的 ...

  5. 【JAVA程序设计教程 第三版 雍俊海】8.8 编写多文档文本编辑器

    题目: 请编写一个简单的多文档文本编辑器.要求可以输入文件名,从指定文件中读取数据,并显示在图形界面上.可以编辑显示在图形界面上的数据,而且可以将显示在图形界面上数据写入指定文件中. 思路: ①:首先 ...

  6. XWriterLib文本编辑器中间件软件技术白皮书

    XWriterLib文本编辑器中间件软件 技术白皮书 (初稿) 袁永福 2007-11-5 前言 XWriterLib文本编辑器中间件软件是XDesigner图形软件工作室自主开发的有一个高级图形软件 ...

  7. linux开发者编辑器,Linux文本编辑器

    在典型的Linux系统上有许多编辑器可用,较流行的编辑器是vi. --这句话引自<Linux程序设计>(<Begunning Linux Programming>- N. Ma ...

  8. vim复制单个字符_vim文本编辑器——删除、复制、剪切、更改某一个字符、替换、撤销、关键字搜索...

    1.删除: (1)删除光标所在处的字符: 如上图所示:点击一次x键只能删除一个字符. (2)删除光标所在处后的n个字符(nx): 删除前: 输入6x: (3)删除光标所在的行(dd): 删除前: 输入 ...

  9. vim文本编辑器详解

    VI: Visual Interface,文本编辑器 文本: ASCII, Unicode vi是一个功能强大的全屏幕文本编辑工具,一直以来都作为类UNIX操作系统的默认文本编辑器,vim(ViImp ...

  10. linux常用文本编辑器nano/vi/vim

    Linux下有很多文本编辑器,其中系统(不管哪个分支)都会自带nano和vi这两个最基本的编辑器.vim相当于vi的升级版.这里我们依次来讲解这几个编辑器的用法. 1.nano 直接在命令行中敲入na ...

最新文章

  1. 第四篇 Gallery控件
  2. R语言使用ggplot2包的快速可视化函数qplot绘制分组箱图实战
  3. Spring Boot——2分钟构建springweb mvc REST风格HelloWorld
  4. android: SharedPreferences存储
  5. 关于BFD(双向转发检测)开发的总结
  6. mysql编译卡主_mysql 编译安装以及主从设定
  7. 前端学习(3048):vue+element今日头条管理-分页布局
  8. 【Python学习】 - skimage包
  9. 使用IPMI工具实现对服务器的远程管理
  10. C++基础::拾遗琐碎
  11. 620. 有趣的电影
  12. Win11怎么安装语音包?Win11语音包安装教程
  13. 飞思卡尔单片机学习记录(一)
  14. 链路冗余的解决和故障的备用方案
  15. window10运行不了1stopt_1stOpt批量处理方程
  16. NTT科学家武居博士:用光去开拓和改变世界
  17. dayjs格式化使用
  18. 机器学习为什么也可以像人一样认识cang老师
  19. 蓝桥2——Beaver's Calculator
  20. 为人所设置的依赖安装程序

热门文章

  1. 1012: 求绝对值 C语言
  2. iOS笔试知识点集锦
  3. 3dsMax学习笔记01_用VRayMtl材质制作玻璃材质
  4. 孪生素数对php编写,孪生素数
  5. 聊天斗图微信表情包小程序源码下载支持长按发送好友
  6. iphone4s蜂窝数据连不上解决方案
  7. 计算机第四章文字处理软件应用课后答案,计算机应用基础第四章文字处理软件.doc...
  8. Gap Statistic算法详解
  9. 苍蓝誓约服务器维护什么时候结束,《苍蓝誓约》12月10日09:30停服维护公告
  10. 南京邮电大学网络攻防训练平台-逆向-Py交易