77范文网 - 专业文章范例文档资料分享平台

如何用C编写文本编辑器(5)

来源:网络收集 时间:2021-04-06 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

C#编写文本编辑器

证明,在处理小的文档时程序运行速度还行,但当文档内容很多,有数万个字符时,分行速度就很慢,还望高手提供解决之道。

为了表示整个文档对象,还定义了文档对象TextDocument ,该对象在文档对象模型中是个最大的对象,我没有模仿其他文档对象的模式将其从TextElement派生过来的,而是直接定义的。该对象用于从整体上操作文档,并列出了一些操作文档的基本操作,比如删除,复制粘贴等。此外还提供一套方法来实现VBA的功能。

此外还定义了文档内容管理对象Content ,该对象隶属于TextDocument对象,用于管理所有的文档元素,它定义了属性Elements,该属性为一个保存了文档所有元素对象的列表。该对象还定义了属性SelectStart来表示插入点的位置,SelectLength 来表示选择区域的长度,为0表示没有选中任何元素,为正数则表示从插入点向后选中了若干个元素,为负数则表示从插入点向前选中了若干个元素。本对象还定义了一套处理插入点的函数,比如向左向右移动若干个元素,向上向下移动一行。大家都知道,在文本框中可以直接用光标键来移动插入点,也可以使用光标键时同时按下Shift键来移动插入点并选择文档内容,用户也可以用鼠标点击操作来移动插入点,鼠标点击的同时按下Shift键也能移动插入点选择文档内容;为此在Content对象定义了属性AutoClearSelection,当设置了该属性则移动插入点时设置SelectLength为0,若没有设置该属性则移动插入点时设置

SelectLength值,使得新插入点和旧插入点之间的元素被选中,这样文本编辑器根据用户是否按下Shift键来设置AutoClearSelection属性就行了。用户修改了插入点和选择区域,则文本编辑器需要重新绘制用户界面,此时需要优化,只重新绘制选择状态发生改变的元素。可以证明,当选择的元素为连续的,则无论如何的修改选择区域和插入点,最多只有两片区域中的元素的选择状态发生改变。因此只要获得这两片区域的起始位置和长度,然后重新绘制这两个区域中的元素即可。

用户可以对文档进行很多种操作,比如移动插入点,选择元素,设置字符的字体颜色和大小,插入文字和图片,修改元素的设置,删除剪切复制粘贴等等,有好几十种操作,而且这些操作在某个时刻是不可用的,需要进行判断,若这些操作都在TextDocument中定义相应的接口函数,则TextDocument类代码太多,过于臃肿,而且每新增一种操作都需要修改TextDocument,因此在此提出动作这个概念。动作就是一个实现某种文档操作的类型,该类型有统一的接口,并使用TextDocument或其他对象提供的基本的操作来实现比较复杂的操作。为此定义动作基础类EditorAction,该类为抽象类,它的主要接口有 HotKey 字段,动作对应的热键代码,动作对象初始化的时候设置该动作对应的热键 KeyCode 字段,触发动作时的键盘按键编码

ShiftKey 字段,触发动作时的Shift键状态

ControlKey 字段,触发动作时的Control键状态

AltKey 字段,触发动作时的Alt键状态

MouseX,MouseY 字段,触发动作时的鼠标光标在视图区域中的坐标

MouseButton 字段,触发动作时的鼠标按键状态

Param1,Param2,Param3 字段,动作的参数,其意义由具体的动作决定

TestHotKey 函数测试键盘热键,本函数由文本编辑器调用来判断是否触发某动作 ActionName 只读属性,动作名称

isEnable 动作是否可用

Execute 执行动作

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库如何用C编写文本编辑器(5)在线全文阅读。

如何用C编写文本编辑器(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1211994.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: