ZenosZeng 发表于 2012-5-9 10:54:00

TX Text Control 邮件合并(八)插入MS Word 中FORCHECKBOX 字段

在纸质或者基于Web的调查问卷中经常会用到复选款,下面我们就来谈一下TX Text Control中如何插入和处理MS Word中的复选款。


TX Text Control 通过ApplicationField类型来对MS Word中的复选款提供支持。本文的示例代码中还会用到一个DocumentServer命名控件中的FieldAdapter类,该类型提供了对最常用域类型的适配功能,比如DATE、MERGEFIELD和FORMCHECKBOX。下面的代码演示了如何在TX Text Control中插入一个复选框域:textControl1.Selection.FontName = "Arial Unicode MS";

// 通过特殊的适配器类型创建一个复选框
FormCheckBox clsCheckBox = new
    TXTextControl.DocumentServer.Fields.FormCheckBox();
clsCheckBox.Text = UNCHECKED;
clsCheckBox.Enabled = true;
clsCheckBox.ApplicationField.Editable = false;
clsCheckBox.ApplicationField.DoubledInputPosition = true;

// 将 ApplicationField 添加到文档中
textControl1.ApplicationFields.Add(clsCheckBox.ApplicationField);
当用户在域中触发单击事件时,先判断是否是FormCheckBox域,如果点击的是FormCheckBox,将改变FormCheckBox的选中状态,代码如下:private void textControl1_TextFieldClicked(object sender,
                  TXTextControl.TextFieldEventArgs e)
{
    // cast the field to an ApplicationField
    ApplicationField field = e.TextField as ApplicationField;

    if (field != null)
    {
      // check whether the field is a checkbox field
      if ((field.TypeName == "FORMCHECKBOX"))
      {
            // create a new adapter field
            FormCheckBox chkb = new FormCheckBox(field);

            if (chkb.Enabled == false)
                return;

            // change the checked state
            if (field.Text == UNCHECKED)
            {
                chkb.Checked = true;
                chkb.Text = CHECKED;
            }
            else if (field.Text == CHECKED)
            {
                chkb.Checked = false;
                chkb.Text = UNCHECKED;
            }
      }
    }
}
TX Text Control中的这些特殊类型的域域普通的文本域类型,可以像文本一样在文档中拖拽移动,TX Text Control中插入的复选框可以保存到DOCX、DOC和RTF格式的文档中。


源码:VS2010 + TX TextControl 17.0
页: [1]
查看完整版本: TX Text Control 邮件合并(八)插入MS Word 中FORCHECKBOX 字段