Legacy-formulärfält
Legacy-formulärfält
Aspose.Words FOSS för .NET läser och manipulerar Words legacy (pre-content-control) formulärfält — textinmatning, kryssruta och rullgardinsfält — via FormField-klassen och dess tre specialiserade fältunderklasser i Aspose.Words.Fields.
Läsa formulärfältvärden
Document.Range.FormFields (en FormFieldCollection) ger direkt åtkomst till varje legacy-formulärfält i ett intervall utan att manuellt gå igenom nodträdet. Varje FormField exponerar Name (bokmärkes-liknande identifieraren som används för att referera till fältet), Type (ett FieldType-värde som identifierar vilken typ av formulärfält det är), Result (det aktuella värdet), Enabled, samt hjälp-/status-text via HelpText/OwnHelp och StatusText/OwnStatus. SetTextInputValue(newValue) sätter ett nytt värde för ett textinmatningsfält direkt. Indexera in i FormFieldCollection med bokmärkesnamn (t.ex. formFields["BookmarkName"]) för att hämta ett specifikt fält, och Remove(formField) / RemoveAt(index) tar bort fält från samlingen.
Text-, kryssruta- och rullgardinsfältstyper
De tre legacy-formulärfältstyperna har var sin dedikerade klass: FieldFormText (det FORMTEXT-fältet, motsvarande FieldType.FieldFormTextInput) för fri-textinmatning, FieldFormCheckBox (det FORMCHECKBOX-fältet) för en boolesk växel, och FieldFormDropDown (det FORMDROPDOWN-fältet) för en urvalslista. På den underliggande FormField-noden styr TextInputType (ett TextFormFieldType-värde — Regular, Number, Date, CurrentDate, CurrentTime eller Calculated) och TextInputFormat hur ett textfältets värde tolkas och formateras; MaxLength begränsar dess inmatningslängd; TextInputDefault tillhandahåller dess standardvärde. Checked och Default gäller för kryssrutor, med IsCheckBoxExactSize/CheckBoxSize som styr dess renderade storlek. Rullgardinsfält bär sin alternativlista i DropDownItems, en DropDownItemCollection som stödjer Add, Insert, Remove, Contains och IndexOf, samt DropDownSelectedIndex för det för närvarande valda objektet.
Tips och bästa praxis
- Använd
Document.Range.FormFieldsistället för att manuellt filtreraDocument.Range.Fieldsefter typ — det är den direkta, typade ingångspunkten för äldre formulärfält. - Ange
CalculateOnExitnär ett formulärfältvärde ska utlösa omberäkning av beroende fält så snart användaren lämnar det. FormField.EntryMacro/ExitMacrorefererar till VBA-makronamn som konfigurerats i det ursprungliga dokumentet — att läsa dem kör ingen makrokod.- Kontrollera
TextInputTypeinnan du tolkar ett textfältsResultsom ett tal eller datum —Regularfält har ingen formatbegränsning.
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
Indexering av FormFieldCollection efter bokmärkesnamn returnerar null | Formfältets bokmärkesnamn matchar inte, eller så finns fältet inte i det sökta intervallet | Bekräfta det exakta bokmärkesnamnet via FormField.Name under uppräkning |
Kryssrutestatusen återspeglas inte efter att ha ställt in Checked | Dokumentet sparas inte efter modifiering | Spara dokumentet efter ändring; Checked läses vid nästa åtkomst |
Rullgardinsmenyn DropDownSelectedIndex ligger utanför intervallet | Indexet motsvarar ingen post i DropDownItems | Validera indexet mot DropDownItems.Count innan du sätter det |
| Värdet i textfältet har inte tillämpats | Använde direkt egenskapstilldelning i stället för SetTextInputValue | Anropa SetTextInputValue(newValue) på FormField |
FAQ
Vad är skillnaden mellan FormField och FieldFormText/FieldFormCheckBox/FieldFormDropDown?
FormField är den generiska noden som representerar alla äldre formulärfält, nås via Document.Range.FormFields. FieldFormText, FieldFormCheckBox och FieldFormDropDown är de fältspecifika klasserna (som ärver från Field) för varje fälttyp när man arbetar via den allmänna Field-samlingen istället.
Hur får jag alla formulärfältsvärden i ett dokument?
Räkna upp Document.Range.FormFields och läs Name/Result på varje FormField.
Kan jag lägga till alternativ i ett rullgardinsformulärfält?
Ja — FormField.DropDownItems är ett DropDownItemCollection med Add(value), Insert(index, value) och Remove(name).
Är dessa samma som moderna content controls?
Nej. Legacy form fields (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) föregick Word:s strukturerade dokumenttagg (content control)-modellen; båda kan förekomma i samma dokument.
API Reference Sammanfattning
| Klass / Metod | Beskrivning |
|---|---|
Document.Range.FormFields | Direkt åtkomst till alla äldre formulärfält i ett intervall |
FormField | Generisk äldre formulärfältsnod: namn, typ, resultat, aktiverat tillstånd |
FormFieldCollection | Samling av FormField-objekt; indexerad efter bokmärkesnamn, Remove() |
FieldFormText | FORMTEXT fältklass |
FieldFormCheckBox | FORMCHECKBOX fältklass |
FieldFormDropDown | FORMDROPDOWN fältklass |
TextFormFieldType | Enum för textfältets inmatningsformat (Regular, Number, Date, etc.) |
DropDownItemCollection | Redigerbar lista över alternativen i ett rullgardinsfält |