Legacy-Formularfelder

Legacy-Formularfelder

Aspose.Words FOSS für .NET liest und manipuliert Word’s legacy (pre-content-control) form fields — text input, checkbox, and drop-down fields — durch die FormField class und ihre drei spezialisierten Feldunterklassen in Aspose.Words.Fields.


Lesen von Formularfeldwerten

Document.Range.FormFields (ein FormFieldCollection) bietet direkten Zugriff auf jedes legacy form field in einem Bereich, ohne den Knotenbaum manuell zu durchlaufen. Jeder FormField stellt Name (die bookmark-artige Kennung zur Referenzierung des Feldes), Type (ein FieldType-Wert, der angibt, welche Art von Formularfeld es ist), Result (den aktuellen Wert), Enabled sowie Hilfe-/Status-Text über HelpText/OwnHelp und StatusText/OwnStatus bereit. SetTextInputValue(newValue) setzt einen neuen Wert für ein Texteingabefeld direkt. Indexiere in FormFieldCollection nach Bookmark-Name (z.B. formFields["BookmarkName"]), um ein bestimmtes Feld abzurufen, und Remove(formField) / RemoveAt(index) löschen Felder aus der Sammlung.


Text-, Checkbox- und Drop-Down-Feldtypen

Die drei legacy form field Typen haben jeweils eine eigene Klasse: FieldFormText (das FORMTEXT Feld, entsprechend FieldType.FieldFormTextInput) für Freitexteingabe, FieldFormCheckBox (das FORMCHECKBOX Feld) für einen booleschen Schalter und FieldFormDropDown (das FORMDROPDOWN Feld) für eine Auswahlliste. Auf dem zugrunde liegenden FormField Knoten steuern TextInputType (ein TextFormFieldType Wert – Regular, Number, Date, CurrentDate, CurrentTime oder Calculated) und TextInputFormat, wie der Wert eines Textfeldes interpretiert und formatiert wird; MaxLength begrenzt seine Eingabelänge; TextInputDefault liefert den Standardwert. Checked und Default gelten für Checkbox-Felder, wobei IsCheckBoxExactSize/CheckBoxSize die gerenderte Größe steuern. Drop-Down-Felder speichern ihre Optionsliste in DropDownItems, einem DropDownItemCollection, das Add, Insert, Remove, Contains und IndexOf unterstützt, plus DropDownSelectedIndex für das aktuell ausgewählte Element.


Tipps und bewährte Vorgehensweisen

  • Verwenden Sie Document.Range.FormFields statt Document.Range.Fields manuell nach Typ zu filtern — es ist der direkte, typisierte Einstiegspunkt für Legacy-Formularfelder.
  • Setzen Sie CalculateOnExit, wenn der Wert eines Formularfeldes die Neuberechnung abhängiger Felder auslösen soll, sobald der Benutzer das Feld verlässt.
  • FormField.EntryMacro / ExitMacro verweisen auf VBA-Makronamen, die im Originaldokument konfiguriert sind — das Auslesen führt keinen Makrocode aus.
  • Prüfen Sie TextInputType, bevor Sie das Result eines Textfeldes als Zahl oder Datum parsen — Regular-Felder unterliegen keinen Formatbeschränkungen.

Häufige Probleme

ProblemUrsacheLösung
Indexierung von FormFieldCollection nach Lesezeichennamen liefert nullDer Lesezeichenname des Formularfelds stimmt nicht überein, oder das Feld existiert nicht im durchsuchten BereichBestätigen Sie den genauen Lesezeichennamen über FormField.Name während der Aufzählung
Der Zustand der Checkbox wird nach dem Setzen von Checked nicht übernommenDokument nach der Änderung nicht gespeichertSpeichern Sie das Dokument nach der Änderung; Checked wird beim nächsten Zugriff gelesen
Drop-down DropDownSelectedIndex außerhalb des BereichsIndex entspricht keinem Element in DropDownItemsValidieren Sie den Index gegenüber DropDownItems.Count, bevor Sie ihn setzen
Wert des Textfelds wurde nicht übernommenDirekte Zuweisung der Eigenschaft verwendet anstelle von SetTextInputValueRufen Sie SetTextInputValue(newValue) auf dem FormField auf

FAQ

Was ist der Unterschied zwischen FormField und FieldFormText/FieldFormCheckBox/FieldFormDropDown?

FormField ist der generische Knoten, der jedes Legacy-Formularfeld repräsentiert und über Document.Range.FormFields erreicht wird. FieldFormText, FieldFormCheckBox und FieldFormDropDown sind die feldspezifischen Klassen (abgeleitet von Field) für jeden Feldtyp, wenn stattdessen über die allgemeine Field-Sammlung gearbeitet wird.

Wie erhalte ich alle Formularfeldwerte in einem Dokument?

Auflisten Sie Document.Range.FormFields und lesen Sie Name/Result bei jedem FormField.

Kann ich Optionen zu einem Dropdown-Formularfeld hinzufügen?

Ja — FormField.DropDownItems ist ein DropDownItemCollection mit Add(value), Insert(index, value) und Remove(name).

Sind diese dieselben wie moderne Inhaltssteuerelemente?

Nein. Legacy-Formularfelder (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) existierten vor dem strukturierten Dokumenten-Tag (Inhaltssteuerelement)-Modell von Word; beide können im selben Dokument auftreten.


API Reference Zusammenfassung

Klasse / MethodeBeschreibung
Document.Range.FormFieldsDirekter Zugriff auf alle Legacy-Formularfelder in einem Bereich
FormFieldGenerischer Legacy-Formularfeld-Knoten: name, type, result, enabled state
FormFieldCollectionSammlung von FormField-Objekten; indexer nach Lesezeichenname, Remove()
FieldFormTextFORMTEXT-Feldklasse
FieldFormCheckBoxFORMCHECKBOX Feldklasse
FieldFormDropDownFORMDROPDOWN Feldklasse
TextFormFieldTypeEnum für das Eingabeformat des Textfelds (Regular, Number, Date, usw.)
DropDownItemCollectionEditierbare Liste der Optionen eines Dropdown-Feldes

Siehe auch

 Deutsch