![](https://csdnimg.cn/release/download_crawler_static/3196611/bg3.jpg)
在这种指导思想下,我也定义了一个抽象类 TextElement,所有的文档对象都是从该对
象派生的。该类定义了以下虚成员:
◆Left,Top,Width,Height 属性,用于表示对象在的位置和显示大小
◆RealLeft , RealTop 只读属性,表示对象在视图区域中的显示位置
◆RefreshSize 方法,用于重新计算对象的显示大小
◆RefreshView 方法,重新绘制对象
◆andleMouseDown 方法,处理鼠标按键按下事件
◆HandleMouseMove 方法,处理鼠标移动事件
◆HandleMouseUp 方法,处理鼠标按键松开事件
◆FromXML 方法,从一个 XML 节点加载对象数据
◆ToXML 方法,向一个 XML 节点保存对象的所有的数据
由于文档内容是分层次的,因此还定义一个容器类型 TextContainer,该类型从
TextElement 派生的,其中进行扩展来可以保存若干个子对象,它定义了以下虚成员:
◆MaxWidth 属性,对象内容的最大宽度,一个文档显示宽度就是纸张宽度减去左右页边
距的距离,文档所有的内容被限制在这个显示宽度中间,该属性和显示宽度有关
◆ChildElements 只读属性,返回所有子对象的集合,返回类型为
System.Collections.ArrayList
◆AppendChild 方法,该方法参数为一个 TextElement 对象,本方法将该对象添加到子
对象集合中
◆RemoveChild 方法,该方法参数为一个 TextElement 对象,本方法从子对象集合中删
除指定的文档元素对象
◆RemoveChildRange 方法,该方法和 RemoveChild 类似,只是用于删除一批子对象
◆InsertBefore 方法,该方法参数为两个 TextElement 对象,第一个参数为要新增的
文档元素对象,第二个为插入点所在的文档元素对象
◆InsertRangeBefore 方法,该方法和 InsertBefore 类型,只是用于插入一批文档元
素对象
在某些容器对象中存在一个特殊的子元素,该子元素为最后一个元素,并且不能删除,
比如对于段落对象,在此是一种容器对象,该对象最后一个元素为一个段落结尾标记对象,
该对象不能删除,而在其他类型的容器对象中也可能存在类似的结尾对象,因此在
TextContainer 对象中就考虑这种情况,因此定义了一套虚成员来处理
◆AddLastElement 虚方法,想容器对象添加段落结尾标记对象来作为最后一个对象,
其他派生的容器对象可以重载该方法来实现自己的最后对象
◆IsLastElement 函数,该函数参数为一个 TextElement 对象,本函数返回指定的