在纸质或者基于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