做一个文本编辑控件,设置字体的格式等功能必不可少。RichTextBox作为.Net提供的富文本控件,成为很多人做文本编辑器的首选。本文将要讨论就是针对RichTextBox控件的设置粗体、斜体、下划线等功能的相关问题。
首先我们看一段设置粗体的代码。
乍一看上面的代码没什么问题,首先获取被选中文本的Font对象,然后判断是否为粗体,如果是,就将粗体取消;如果不是,则将被选中文本设为粗体。写几个字母并选中,点击 B 按钮,文字加粗;再点击,文字去粗。好像真的没什么问题。那如果我选中的字体中既有汉字又有英文,或者字体的FontName不同时,会有问题吗?试一下,结果出异常了。
为什么呢?因为我们选中的文本格式不同一,它们的Font不一样,当它们被选中时,我们获得的SelectionFont就是null了,因此这里会出现空指针异常。该怎么办呢?我们可以在使用前先判断一下oldFont是否为空。如果为空,我们再做单独处理。
在被选中文本的SelectionFont为空的情况下,我们该怎样设置被选中文本的格式是一个很重要的问题。虽然整体的SelectionFont为空,但是,如果我们化整为零,只选中一个文字,那么它的Font肯定不为空,而设置它的FontStyle也 就很简单了。因此,我们得出这样的策略。
1. 如果只选中一个文字或者光标没有选中文字而只是处于文本框的某一坐标点,这时SelectionFont不为空,可直接加粗或去粗。
2. 如果选中了多个文字并且SelectionFont为空,可以做如下处理,首先获取被选中文本的ProtoType,即保留被选文字的副本,对其副本进行操作而不影响它的原型。逐一选中副本中的文字,并一一设置它们的FontStyle。
3. 如果选中了多个文字但是它的SelectionFont不为空,即它们的字体种类相同,能不能直接像第一种情况那样加粗去粗呢?不能,因为它们的FontSize和FontStyle可能不相同。这时我们也需要一一处理,因此,情况3类似于情况2的处理方法。
以上是针对Bold的讨论,同样也适用于Italic和Underline,因此,我们可以写一个统一的设置FontStyle的方法,方法如下所示。
这样就避免了设置字体格式时的上述问题。
分享到:
相关推荐
2.1.4 设置控件背景的属性 2.1.5 FlatStyle和FlatAppearance属性 2.1.6 Image类属性 2.1.7 UseWaitCursor属性 2.1.8 UseVisualStyleBackColor属性 2.1.9 ContextMenuStrip属性 2.1.10 TextlmageRelation属性 2.2 ...
非常经典的高校C# .net开发教程,《Visual C#.NET程序设计》作者,李兰友,杨晓光,清华出版社,北交出版社,含有书籍和源码。 本书主要介绍Visual C#.NET应用程序设计技术。内容包括:Visual C#.NET集成环境,常用...
这是一个web服务端控件,加入到ToolBox后,可拖放到页面使用。将附带的图片放到站点文件夹内,设置控件的ImageUrl属性指向图片所在文件夹即可。
C# RichTextbox设置行间距
如何最简单在C#中,richTextBox,控件,中放入图片 如何最简单在C#中,richTextBox,控件,中放入图片 如何最简单在C#中,richTextBox,控件,中放入图片 如何最简单在C#中,richTextBox,控件,中放入图片 如何最...
C#WinForm Ri用chTextBox做的 文本编辑器带有左中右等功能
C#中RichTextBox控件+扩展工具栏(toolbar)实现的文本编辑器 比较简单 标题太长 囧。。
一个RichTextBox 自动加行号的程序,非常好用.
本DataGridView打印控件和.NET打印控件5.6版(含报表模板设计组件)2014年6月22日修改完成,完全免费,在.NET2.0及以上环境下都可以使用(VB打印、C#打印都是可以的),有帮助文档与使用实例。 与上一版本的5.5版...
C# 源码 扩展 RichTextBox 控件 加加入图片 文档 控件
1、强大的DataGridView打印功能,不仅可以以多种形式(普通打印、分栏打印、跨页打印、工资条打印)打印DGV表格,基本上能完全按DGV控件本身设置的格式如字体、字号、背景颜色、前景颜色、单元格对齐方式等打印出来...
Windows窗体中的RichTextBox控件用于显示,输入和操作格式化的文本,RichTextBox除了拥有TextBox控件的所有功能外,还可以显示字体,颜色,链接,从文件中读取和加载图像,以及查找指定的字符。RichTextBox控件通常...
.Net自行开发控件集合 功能包括: 下面两种比较实用 1、Richtextbox控件:包括头像、图片的插入粘贴、常见的文本操作、简单表格的插入、打印、日期、保存、打开等等功能。可以用在Email、通知发布等等...
文本编辑器控件
vb.net实现多文本编辑器,vb.net实现,用vs2005
C# 在richtextbox中生成表格 ,在richtextbox中画表格,共享给大家,不错的东东
本DataGridView打印控件和.NET打印控件5.5版(含报表模板设计组件)2014年2月8日修改完成,完全免费,在.NET2.0及以上环境下都可以使用(VB打印、C#打印都是可以的),有帮助文档与使用实例。 与上一版本的5.4版...
全书共分13章,分别介绍了可调节类控件、选择类控件、显示类控件、组合类控件、容器类控件、菜单和工具栏类控件、数据控件、应用类控件、打印类控件、对话框类控件、水晶报表控件、多媒体播放控件、自定义控件等13类...
61 2.4 RichTextBox控件应用 63 实例056 利用RichTextBox控件实现文档管理功能 63 实例057 利用RichTextBox控件实现文字定位与标识 65 实例058 用RichTextBox控件显示图文数据 67 2.5 ...
C#161演示将图片和文字混合显示在RichTextBox控件中 源代码