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