Champs de formulaire hérités

Champs de formulaire hérités

Champs de formulaire hérités

Aspose.Words FOSS pour .NET lit et manipule les champs legacy (pré-contrôle de contenu) de Word — champs de texte, cases à cocher et listes déroulantes — via la classe FormField et ses trois sous-classes spécialisées dans Aspose.Words.Fields.


Lecture des valeurs de champ

Document.Range.FormFields (un FormFieldCollection) offre un accès direct à chaque champ legacy dans une plage sans parcourir manuellement l’arbre de nœuds. Chaque FormField expose Name (l’identifiant de type signet utilisé pour référencer le champ), Type (une valeur FieldType indiquant le type de champ), Result (la valeur actuelle), Enabled, ainsi que le texte d’aide/état via HelpText/OwnHelp et StatusText/OwnStatus. SetTextInputValue(newValue) définit une nouvelle valeur pour un champ texte directement. Accédez à FormFieldCollection par nom de signet (par ex. formFields["BookmarkName"]) pour récupérer un champ précis, et utilisez Remove(formField) / RemoveAt(index) pour supprimer des champs de la collection.


Types de champs texte, case à cocher et liste déroulante

Les trois types de champs legacy possèdent chacun une classe dédiée: FieldFormText (le champ FORMTEXT, correspondant à FieldType.FieldFormTextInput) pour la saisie libre, FieldFormCheckBox (le champ FORMCHECKBOX) pour un basculement booléen, et FieldFormDropDown (le champ FORMDROPDOWN) pour une liste de sélection. Sur le nœud sous-jacent FormField, TextInputType (une valeur TextFormFieldType — Regular, Number, Date, CurrentDate, CurrentTime ou Calculated) et TextInputFormat déterminent comment la valeur du champ texte est interprétée et formatée; MaxLength fixe la longueur maximale autorisée; TextInputDefault fournit la valeur par défaut. Checked et Default s’appliquent aux champs case à cocher, avec IsCheckBoxExactSize/CheckBoxSize contrôlant la taille affichée. Les listes déroulantes conservent leur collection d’options dans DropDownItems, un DropDownItemCollection prenant en charge Add, Insert, Remove, Contains et IndexOf, plus DropDownSelectedIndex pour l’élément actuellement sélectionné.


Conseils et bonnes pratiques

  • Utilisez Document.Range.FormFields plutôt que de filtrer manuellement Document.Range.Fields par type — c’est le point d’entrée direct et typé pour les champs de formulaire hérités.
  • Définissez CalculateOnExit lorsqu’une valeur de champ de formulaire doit déclencher le recalcul du champ dépendant dès que l’utilisateur le quitte.
  • FormField.EntryMacro / ExitMacro font référence aux noms de macros VBA configurés dans le document original — les lire n’exécute aucun code macro.
  • Vérifiez TextInputType avant d’analyser le Result d’un champ texte comme nombre ou date — les champs Regular n’imposent aucune contrainte de format.

Problèmes courants

ProblèmeCauseSolution
L’indexation de FormFieldCollection par le nom du signet renvoie nullLe nom du signet du champ ne correspond pas, ou le champ est absent de la plage recherchéeConfirmez le nom exact du signet via FormField.Name lors de l’énumération
L’état de la case à cocher n’est pas reflété après avoir défini CheckedDocument non enregistré après modificationEnregistrez le document après modification ; Checked est lu lors du prochain accès
Liste déroulante DropDownSelectedIndex hors limitesL’index ne correspond à aucun élément dans DropDownItemsValidez l’index par rapport à DropDownItems.Count avant de le définir
Valeur du champ texte non appliquéeUtilisation d’une affectation directe de propriété au lieu de SetTextInputValueAppelez SetTextInputValue(newValue) sur le FormField

FAQ

Quelle est la différence entre FormField et FieldFormText/FieldFormCheckBox/FieldFormDropDown?

FormField est le nœud générique représentant tout champ de formulaire hérité, accessible via Document.Range.FormFields. FieldFormText, FieldFormCheckBox et FieldFormDropDown sont les classes spécifiques à chaque champ (héritant de Field) pour chaque type de champ lorsqu’on travaille via la collection générale Field à la place.

Comment obtenir toutes les valeurs des champs de formulaire dans un document?

Énumérez Document.Range.FormFields et lisez Name/Result sur chaque FormField.

Puis-je ajouter des options à un champ de formulaire déroulant?

Oui — FormField.DropDownItems est un DropDownItemCollection avec Add(value), Insert(index, value) et Remove(name).

Sont-ils les mêmes que les contrôles de contenu modernes?

Non. Les anciens champs de formulaire (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) précèdent le modèle de balise de document structuré (contrôle de contenu) de Word; les deux peuvent apparaître dans le même document.


API Reference Résumé

Classe / MéthodeDescription
Document.Range.FormFieldsAccès direct à tous les champs hérités d’une plage
FormFieldNœud générique de champ hérité : nom, type, résultat, état activé
FormFieldCollectionCollection d’objets FormField ; indexeur par nom de signet, Remove()
FieldFormTextClasse de champ FORMTEXT
FieldFormCheckBoxFORMCHECKBOX classe de champ
FieldFormDropDownFORMDROPDOWN classe de champ
TextFormFieldTypeEnum pour le format d’entrée du champ texte (Regular, Number, Date, etc.)
DropDownItemCollectionListe modifiable des options d’un champ déroulant

Voir aussi

 Français