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.FormFieldsplutôt que de filtrer manuellementDocument.Range.Fieldspar type — c’est le point d’entrée direct et typé pour les champs de formulaire hérités. - Définissez
CalculateOnExitlorsqu’une valeur de champ de formulaire doit déclencher le recalcul du champ dépendant dès que l’utilisateur le quitte. FormField.EntryMacro/ExitMacrofont référence aux noms de macros VBA configurés dans le document original — les lire n’exécute aucun code macro.- Vérifiez
TextInputTypeavant d’analyser leResultd’un champ texte comme nombre ou date — les champsRegularn’imposent aucune contrainte de format.
Problèmes courants
| Problème | Cause | Solution |
|---|---|---|
L’indexation de FormFieldCollection par le nom du signet renvoie null | Le nom du signet du champ ne correspond pas, ou le champ est absent de la plage recherchée | Confirmez 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 Checked | Document non enregistré après modification | Enregistrez le document après modification ; Checked est lu lors du prochain accès |
Liste déroulante DropDownSelectedIndex hors limites | L’index ne correspond à aucun élément dans DropDownItems | Validez l’index par rapport à DropDownItems.Count avant de le définir |
| Valeur du champ texte non appliquée | Utilisation d’une affectation directe de propriété au lieu de SetTextInputValue | Appelez 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éthode | Description |
|---|---|
Document.Range.FormFields | Accès direct à tous les champs hérités d’une plage |
FormField | Nœud générique de champ hérité : nom, type, résultat, état activé |
FormFieldCollection | Collection d’objets FormField ; indexeur par nom de signet, Remove() |
FieldFormText | Classe de champ FORMTEXT |
FieldFormCheckBox | FORMCHECKBOX classe de champ |
FieldFormDropDown | FORMDROPDOWN classe de champ |
TextFormFieldType | Enum pour le format d’entrée du champ texte (Regular, Number, Date, etc.) |
DropDownItemCollection | Liste modifiable des options d’un champ déroulant |