Legacy-formuliervelden
Legacy Formuliervelden
Aspose.Words FOSS voor .NET leest en manipuleert Word’s legacy (pre-content-control) formuliervelden — tekstinvoer, selectievakje en vervolgkeuzelijsten — via de FormField klasse en zijn drie gespecialiseerde veldsubklassen in Aspose.Words.Fields.
Lezen van Formulierveldwaarden
Document.Range.FormFields (een FormFieldCollection) biedt directe toegang tot elk legacy-formulierveld in een bereik zonder handmatig door de knooppuntboom te lopen. Elke FormField legt Name bloot (de bladwijzer-achtige identifier die wordt gebruikt om naar het veld te verwijzen), Type (een FieldType waarde die aangeeft welk type formulierveld het is), Result (de huidige waarde), Enabled, en help/status-tekst via HelpText/OwnHelp en StatusText/OwnStatus. SetTextInputValue(newValue) stelt een nieuwe waarde voor een tekstinvoerveld direct in. Indexeer in FormFieldCollection op bladwijzernaam (bijv. formFields["BookmarkName"]) om een specifiek veld op te halen, en Remove(formField) / RemoveAt(index) verwijderen velden uit de collectie.
Tekst-, selectievakje- en vervolgkeuzeveldtypen
De drie legacy-formulierveldtypen hebben elk een eigen klasse: FieldFormText (het FORMTEXT veld, overeenkomend met FieldType.FieldFormTextInput) voor vrije-tekst invoer, FieldFormCheckBox (het FORMCHECKBOX veld) voor een booleaanse schakelaar, en FieldFormDropDown (het FORMDROPDOWN veld) voor een keuzelijst. Op het onderliggende FormField knooppunt bepalen TextInputType (een TextFormFieldType waarde — Regular, Number, Date, CurrentDate, CurrentTime of Calculated) en TextInputFormat hoe de waarde van een tekstveld wordt geïnterpreteerd en opgemaakt; MaxLength begrenst de invoerlengte; TextInputDefault levert de standaardwaarde. Checked en Default zijn van toepassing op selectievakje-velden, waarbij IsCheckBoxExactSize/CheckBoxSize de weergegeven grootte regelen. Vervolgkeuzevelden bewaren hun optielijst in DropDownItems, een DropDownItemCollection die Add, Insert, Remove, Contains en IndexOf ondersteunt, plus DropDownSelectedIndex voor het momenteel geselecteerde item.
Tips en best practices
- Gebruik
Document.Range.FormFieldsin plaats van handmatigDocument.Range.Fieldsop type te filteren — het is het directe, getypeerde toegangspunt voor legacy-formuliervelden. - Stel
CalculateOnExitin wanneer de waarde van een formulierveld de herberekening van afhankelijke velden moet activeren zodra de gebruiker het veld verlaat. FormField.EntryMacro/ExitMacroverwijzen naar VBA-macro-namen die in het oorspronkelijke document zijn geconfigureerd — ze lezen voert geen macro-code uit.- Controleer
TextInputTypevoordat je deResultvan een tekstveld als een getal of datum parseert —Regular-velden leggen geen formatbeperking op.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
Indexeren van FormFieldCollection op bladwijzernaam geeft null terug | De bladwijzernaam van het formulierveld komt niet overeen, of het veld bestaat niet in het doorzochte bereik | Bevestig de exacte bladwijzernaam via FormField.Name tijdens het enumereren |
Checkboxstatus wordt niet weergegeven na het instellen van Checked | Document niet opgeslagen na wijziging | Sla het document op na wijziging; Checked wordt gelezen bij de volgende toegang |
Keuzelijst DropDownSelectedIndex buiten bereik | Index komt niet overeen met een item in DropDownItems | Valideer de index ten opzichte van DropDownItems.Count voordat u deze instelt |
| Tekstveldwaarde niet toegepast | Directe eigenschapstoewijzing gebruikt in plaats van SetTextInputValue | Roep SetTextInputValue(newValue) aan op de FormField |
FAQ
Wat is het verschil tussen FormField en FieldFormText/FieldFormCheckBox/FieldFormDropDown?
FormField is het generieke knooppunt dat elk legacy-formulierveld vertegenwoordigt, bereikbaar via Document.Range.FormFields. FieldFormText, FieldFormCheckBox en FieldFormDropDown zijn de veld-specifieke klassen (afgeleid van Field) voor elk veldtype wanneer je in plaats daarvan via de algemene Field-collectie werkt.
Hoe haal ik alle formulierveldwaarden op in een document?
Doorloop Document.Range.FormFields en lees Name/Result op elke FormField.
Kan ik opties toevoegen aan een vervolgkeuzelijst-formulierveld?
Ja — FormField.DropDownItems is een DropDownItemCollection met Add(value), Insert(index, value) en Remove(name).
Zijn deze hetzelfde als moderne content controls?
Nee. Legacy-formuliervelden (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) bestaan vóór het gestructureerde documenttag-model (content control) van Word; beide kunnen in hetzelfde document voorkomen.
API Reference Samenvatting
| Klasse / Methode | Beschrijving |
|---|---|
Document.Range.FormFields | Directe toegang tot alle legacy-formuliervelden in een bereik |
FormField | Generieke legacy-formulierveldknoop: naam, type, resultaat, ingeschakelde status |
FormFieldCollection | Collectie van FormField objecten; geïndexeerd op bladwijzernaam, Remove() |
FieldFormText | FORMTEXT veldklasse |
FieldFormCheckBox | FORMCHECKBOX veldklasse |
FieldFormDropDown | FORMDROPDOWN veldklasse |
TextFormFieldType | Enum voor invoerformaat van tekstveld (Regular, Number, Date, etc.) |
DropDownItemCollection | Bewerkbare lijst met opties van een vervolgkeuzelijstveld |