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.FormFields istället för att manuellt filtrera Document.Range.Fields efter typ — det är den direkta, typade ingångspunkten för äldre formulärfält.
  • Ange CalculateOnExit när ett formulärfältvärde ska utlösa omberäkning av beroende fält så snart användaren lämnar det.
  • FormField.EntryMacro / ExitMacro refererar till VBA-makronamn som konfigurerats i det ursprungliga dokumentet — att läsa dem kör ingen makrokod.
  • Kontrollera TextInputType innan du tolkar ett textfälts Result som ett tal eller datum — Regular fält har ingen formatbegränsning.

Vanliga problem

ProblemOrsakLösning
Indexering av FormFieldCollection efter bokmärkesnamn returnerar nullFormfältets bokmärkesnamn matchar inte, eller så finns fältet inte i det sökta intervalletBekräfta det exakta bokmärkesnamnet via FormField.Name under uppräkning
Kryssrutestatusen återspeglas inte efter att ha ställt in CheckedDokumentet sparas inte efter modifieringSpara dokumentet efter ändring; Checked läses vid nästa åtkomst
Rullgardinsmenyn DropDownSelectedIndex ligger utanför intervalletIndexet motsvarar ingen post i DropDownItemsValidera indexet mot DropDownItems.Count innan du sätter det
Värdet i textfältet har inte tillämpatsAnvände direkt egenskapstilldelning i stället för SetTextInputValueAnropa 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 / MetodBeskrivning
Document.Range.FormFieldsDirekt åtkomst till alla äldre formulärfält i ett intervall
FormFieldGenerisk äldre formulärfältsnod: namn, typ, resultat, aktiverat tillstånd
FormFieldCollectionSamling av FormField-objekt; indexerad efter bokmärkesnamn, Remove()
FieldFormTextFORMTEXT fältklass
FieldFormCheckBoxFORMCHECKBOX fältklass
FieldFormDropDownFORMDROPDOWN fältklass
TextFormFieldTypeEnum för textfältets inmatningsformat (Regular, Number, Date, etc.)
DropDownItemCollectionRedigerbar lista över alternativen i ett rullgardinsfält

Se även

 Svenska