找回密码
 立即注册

QQ登录

只需一步,快速开始

ZenosZeng 讲师达人认证 悬赏达人认证

超级版主

299

主题

7874

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
13131

活字格认证圣诞拼拼乐微信认证勋章讲师达人元老葡萄悬赏达人

ZenosZeng 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-9 11:09  /   查看:5993  /  回复:0
TX Text Control .NET for Windows Forms中提供了ApplicationField类型来操作MS Word中一些标准的域,比如:合并域(MergeField)、日期(Date)以及页号(Numpages)等。这些域需要用到的参数都被封装称一个熟悉Parameters,可以通过Parameters来获取和设置每种域的参数。
在使用与之前,我们需要了解一下标准域类型都有哪些,TX Text Control中通过FieldAdapter类型对以下标准域提供了支持:
  • MergeField
  • DateField
  • IfField
  • IncludeText
  • FormCheckbox
  • FormDropDown
  • FormText


通过以上这些类型可以创建和操作MS Word中的域类型,而且这些类型都将标准域的参数封装成一个个的属性,我们可以直接设置这些属性来控制域的行为。
下面我们以MS Word中MergeField为例,来了解在MS Word中如何设置域以及相关参数:
  1. {MERGEFIELD company \* Upper \b "Company:" \* MERGEFORMAT}
复制代码
下面的结果图解释了上面这行代码中每项参数设置的具体含义:

png

png


如果通过ApplicationField来访问MergeField,需要设置下面这些参数:
  1. { "company", "\* Upper", "\b \"Company\"", "\* MERGEFORMAT" }
复制代码
如果使用FieldAdapter类来操作MergeField又需要怎样实现呢?顾名思义,FieldAdapter是ApplicationField的一个适配器,我们可以创建一个MergeField类的实例,然后设置该实例的一些属性即可。
  1. foreach (TXTextControl.ApplicationField field in textControl1.ApplicationFields)
  2. {
  3.     if(field.TypeName == "MERGEFIELD")
  4.     {
  5.         TXTextControl.DocumentServer.Fields.MergeField mergeField =
  6.             new TXTextControl.DocumentServer.Fields.MergeField(field);
  7.         mergeField.Name = "companyname";
  8.     }
  9. }
复制代码
在上面的代码中,我们首先判断了域的TypeName属性,如果是MergeField,就创建一个适配器类的实例,并将field作为创建实例时的参数,创建实例之后,我们就可以通过实例的名称来访问特定类型的域了。当然,你还可以将FieldAdapter类的实例插入到所有域的集合中。
  1. TXTextControl.DocumentServer.Fields.MergeField mergeField =
  2.         new TXTextControl.DocumentServer.Fields.MergeField();
  3.     textControl1.ApplicationFields.Add(mergeField.ApplicationField);
复制代码
备注:使用FieldAdapter类,可以非常方便的处理MS Word中常用的域类型,你不必担心这些域的参数该如何设置,因为这些参数都已经被封装为一些属性,可以直接访问。

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部