Campos de formulario heredados

Campos de formulario heredados

Campos de formulario heredados

Aspose.Words FOSS para .NET lee y manipula los campos de formulario heredados (pre-control-de-contenido) de Word — campos de entrada de texto, casilla de verificación y listas desplegables — a través de la clase FormField y sus tres subclases de campo especializadas en Aspose.Words.Fields.


Lectura de valores de campos de formulario

Document.Range.FormFields (un FormFieldCollection) proporciona acceso directo a cada campo de formulario heredado en un rango sin recorrer manualmente el árbol de nodos. Cada FormField expone Name (el identificador estilo marcador usado para referenciar el campo), Type (un valor FieldType que identifica qué tipo de campo de formulario es), Result (el valor actual), Enabled, y el texto de ayuda/estado a través de HelpText/OwnHelp y StatusText/OwnStatus. SetTextInputValue(newValue) establece un nuevo valor para un campo de entrada de texto directamente. Indexe en FormFieldCollection por nombre de marcador (p. ej., formFields["BookmarkName"]) para obtener un campo específico, y Remove(formField)/RemoveAt(index) eliminan campos de la colección.


Tipos de campo de texto, casilla de verificación y lista desplegable

Los tres tipos de campos de formulario heredados tienen cada uno una clase dedicada: FieldFormText (el campo FORMTEXT, correspondiente a FieldType.FieldFormTextInput) para entrada de texto libre, FieldFormCheckBox (el campo FORMCHECKBOX) para un conmutador booleano, y FieldFormDropDown (el campo FORMDROPDOWN) para una lista de selección. En el nodo subyacente FormField, TextInputType (un valor TextFormFieldType — Regular, Number, Date, CurrentDate, CurrentTime o Calculated) y TextInputFormat controlan cómo se interpreta y formatea el valor de un campo de texto; MaxLength delimita la longitud de su entrada; TextInputDefault suministra su valor predeterminado. Checked y Default se aplican a los campos de casilla de verificación, con IsCheckBoxExactSize/CheckBoxSize controlando su tamaño renderizado. Los campos desplegables almacenan su lista de opciones en DropDownItems, un DropDownItemCollection que admite Add, Insert, Remove, Contains y IndexOf, además de DropDownSelectedIndex para el elemento actualmente seleccionado.


Consejos y mejores prácticas

  • Utilice Document.Range.FormFields en lugar de filtrar manualmente Document.Range.Fields por tipo — es el punto de entrada directo y tipado para los campos de formulario heredados.
  • Establezca CalculateOnExit cuando el valor de un campo de formulario debe desencadenar el recálculo del campo dependiente tan pronto como el usuario lo abandone.
  • FormField.EntryMacro / ExitMacro hacen referencia a nombres de macros VBA configurados en el documento original — leerlos no ejecuta ningún código de macro.
  • Verifique TextInputType antes de analizar el Result de un campo de texto como número o fecha — los campos Regular no imponen ninguna restricción de formato.

Problemas comunes

ProblemaCausaSolución
Indexar FormFieldCollection por nombre de marcador devuelve nullEl nombre de marcador del campo del formulario no coincide, o el campo no existe en el rango buscadoConfirme el nombre exacto del marcador mediante FormField.Name mientras enumera
El estado de la casilla de verificación no se refleja después de establecer CheckedDocumento no guardado después de la modificaciónGuarde el documento después de la modificación; Checked se lee en el siguiente acceso
Desplegable DropDownSelectedIndex fuera de rangoEl índice no corresponde a un elemento en DropDownItemsValide el índice contra DropDownItems.Count antes de establecerlo
Valor del campo de texto no aplicadoSe usó asignación directa de propiedad en lugar de SetTextInputValueLlame a SetTextInputValue(newValue) en el FormField

FAQ

¿Cuál es la diferencia entre FormField y FieldFormText/FieldFormCheckBox/FieldFormDropDown?

FormField es el nodo genérico que representa cualquier campo de formulario heredado, al que se accede a través de Document.Range.FormFields. FieldFormText, FieldFormCheckBox y FieldFormDropDown son las clases específicas de campo (derivadas de Field) para cada tipo de campo cuando se trabaja mediante la colección general Field.

¿Cómo obtengo todos los valores de los campos de formulario en un documento?

Enumere Document.Range.FormFields y lea Name/Result en cada FormField.

¿Puedo agregar opciones a un campo de formulario desplegable?

Sí — FormField.DropDownItems es un DropDownItemCollection con Add(value), Insert(index, value) y Remove(name).

¿Son estos los mismos que los controles de contenido modernos?

No. Los campos de formulario heredados (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) son anteriores al modelo de etiqueta de documento estructurado (control de contenido) de Word; ambos pueden aparecer en el mismo documento.


Resumen de API Reference

Clase / MétodoDescripción
Document.Range.FormFieldsAcceso directo a todos los campos de formulario heredados en un rango
FormFieldNodo genérico de campo de formulario heredado: nombre, tipo, resultado, estado habilitado
FormFieldCollectionColección de objetos FormField; indexador por nombre de marcador, Remove()
FieldFormTextClase de campo FORMTEXT
FieldFormCheckBoxFORMCHECKBOX clase de campo
FieldFormDropDownFORMDROPDOWN clase de campo
TextFormFieldTypeEnum para formato de entrada del campo de texto (Regular, Number, Date, etc.)
DropDownItemCollectionLista editable de las opciones de un campo desplegable

Ver también

 Español