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.FormFieldsen lugar de filtrar manualmenteDocument.Range.Fieldspor tipo — es el punto de entrada directo y tipado para los campos de formulario heredados. - Establezca
CalculateOnExitcuando el valor de un campo de formulario debe desencadenar el recálculo del campo dependiente tan pronto como el usuario lo abandone. FormField.EntryMacro/ExitMacrohacen referencia a nombres de macros VBA configurados en el documento original — leerlos no ejecuta ningún código de macro.- Verifique
TextInputTypeantes de analizar elResultde un campo de texto como número o fecha — los camposRegularno imponen ninguna restricción de formato.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
Indexar FormFieldCollection por nombre de marcador devuelve null | El nombre de marcador del campo del formulario no coincide, o el campo no existe en el rango buscado | Confirme 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 Checked | Documento no guardado después de la modificación | Guarde el documento después de la modificación; Checked se lee en el siguiente acceso |
Desplegable DropDownSelectedIndex fuera de rango | El índice no corresponde a un elemento en DropDownItems | Valide el índice contra DropDownItems.Count antes de establecerlo |
| Valor del campo de texto no aplicado | Se usó asignación directa de propiedad en lugar de SetTextInputValue | Llame 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étodo | Descripción |
|---|---|
Document.Range.FormFields | Acceso directo a todos los campos de formulario heredados en un rango |
FormField | Nodo genérico de campo de formulario heredado: nombre, tipo, resultado, estado habilitado |
FormFieldCollection | Colección de objetos FormField; indexador por nombre de marcador, Remove() |
FieldFormText | Clase de campo FORMTEXT |
FieldFormCheckBox | FORMCHECKBOX clase de campo |
FieldFormDropDown | FORMDROPDOWN clase de campo |
TextFormFieldType | Enum para formato de entrada del campo de texto (Regular, Number, Date, etc.) |
DropDownItemCollection | Lista editable de las opciones de un campo desplegable |