ZenosZeng 发表于 2012-5-9 11:09:00

TX Text Control 邮件合并(十)通过FieldAdapter操作ApplicationFields

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中常用的域类型,你不必担心这些域的参数该如何设置,因为这些参数都已经被封装为一些属性,可以直接访问。
页: [1]
查看完整版本: TX Text Control 邮件合并(十)通过FieldAdapter操作ApplicationFields