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.FormFieldsstattDocument.Range.Fieldsmanuell 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/ExitMacroverweisen auf VBA-Makronamen, die im Originaldokument konfiguriert sind — das Auslesen führt keinen Makrocode aus.- Prüfen Sie
TextInputType, bevor Sie dasResulteines Textfeldes als Zahl oder Datum parsen —Regular-Felder unterliegen keinen Formatbeschränkungen.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
Indexierung von FormFieldCollection nach Lesezeichennamen liefert null | Der Lesezeichenname des Formularfelds stimmt nicht überein, oder das Feld existiert nicht im durchsuchten Bereich | Bestätigen Sie den genauen Lesezeichennamen über FormField.Name während der Aufzählung |
Der Zustand der Checkbox wird nach dem Setzen von Checked nicht übernommen | Dokument nach der Änderung nicht gespeichert | Speichern Sie das Dokument nach der Änderung; Checked wird beim nächsten Zugriff gelesen |
Drop-down DropDownSelectedIndex außerhalb des Bereichs | Index entspricht keinem Element in DropDownItems | Validieren Sie den Index gegenüber DropDownItems.Count, bevor Sie ihn setzen |
| Wert des Textfelds wurde nicht übernommen | Direkte Zuweisung der Eigenschaft verwendet anstelle von SetTextInputValue | Rufen 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 / Methode | Beschreibung |
|---|---|
Document.Range.FormFields | Direkter Zugriff auf alle Legacy-Formularfelder in einem Bereich |
FormField | Generischer Legacy-Formularfeld-Knoten: name, type, result, enabled state |
FormFieldCollection | Sammlung von FormField-Objekten; indexer nach Lesezeichenname, Remove() |
FieldFormText | FORMTEXT-Feldklasse |
FieldFormCheckBox | FORMCHECKBOX Feldklasse |
FieldFormDropDown | FORMDROPDOWN Feldklasse |
TextFormFieldType | Enum für das Eingabeformat des Textfelds (Regular, Number, Date, usw.) |
DropDownItemCollection | Editierbare Liste der Optionen eines Dropdown-Feldes |