Starsze pola formularza
Starsze pola formularzy
Aspose.Words FOSS dla .NET odczytuje i manipuluje starszymi (przed-kontrolą-zawartości) polami formularza w Wordzie — pola tekstowe, pola wyboru (checkbox) i pola rozwijane — poprzez klasę FormField oraz jej trzy wyspecjalizowane podklasy pól w Aspose.Words.Fields.
Odczytywanie wartości pól formularza
Document.Range.FormFields (a FormFieldCollection) zapewnia bezpośredni dostęp do każdego starszego pola formularza w zakresie bez konieczności ręcznego przemierzania drzewa węzłów. Każdy FormField udostępnia Name (identyfikator w stylu zakładki używany do odwoływania się do pola), Type (wartość FieldType określająca, jakiego rodzaju jest pole formularza), Result (obecną wartość), Enabled, oraz tekst pomocy/statusu poprzez HelpText/OwnHelp i StatusText/OwnStatus. SetTextInputValue(newValue) ustawia nową wartość dla pola tekstowego bezpośrednio. Indeksuj FormFieldCollection po nazwie zakładki (np. formFields["BookmarkName"]), aby pobrać konkretne pole, oraz Remove(formField) / RemoveAt(index) usuwają pola z kolekcji.
Typy pól tekstowych, pól wyboru i pól rozwijanych
Trzy starsze typy pól formularza mają każda dedykowaną klasę: FieldFormText (pole FORMTEXT, odpowiadające FieldType.FieldFormTextInput) dla wprowadzania dowolnego tekstu, FieldFormCheckBox (pole FORMCHECKBOX) dla przełącznika logicznego oraz FieldFormDropDown (pole FORMDROPDOWN) dla listy wyboru. Na leżącym u podstaw FormField węźle, TextInputType (wartość TextFormFieldType — Regular, Number, Date, CurrentDate, CurrentTime lub Calculated) oraz TextInputFormat kontrolują sposób interpretacji i formatowania wartości pola tekstowego; MaxLength ogranicza długość wprowadzanych danych; TextInputDefault dostarcza wartość domyślną. Checked i Default odnoszą się do pól wyboru, przy czym IsCheckBoxExactSize/CheckBoxSize kontrolują ich renderowany rozmiar. Pola rozwijane przechowują listę opcji w DropDownItems, DropDownItemCollection obsługującą Add, Insert, Remove, Contains i IndexOf, oraz DropDownSelectedIndex dla aktualnie wybranego elementu.
Wskazówki i najlepsze praktyki
- Użyj
Document.Range.FormFieldszamiast ręcznego filtrowaniaDocument.Range.Fieldswedług typu — jest to bezpośredni, typowany punkt wejścia dla starszych pól formularza. - Ustaw
CalculateOnExit, gdy wartość pola formularza ma wywołać przeliczenie zależnych pól natychmiast po opuszczeniu go przez użytkownika. FormField.EntryMacro/ExitMacroodwołują się do nazw makr VBA skonfigurowanych w oryginalnym dokumencie — ich odczyt nie uruchamia żadnego kodu makra.- Sprawdź
TextInputTypeprzed analiząResultpola tekstowego jako liczby lub daty — polaRegularnie narzucają żadnych ograniczeń formatowych.
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
Indeksowanie FormFieldCollection po nazwie zakładki zwraca null | Nazwa zakładki pola formularza nie pasuje, lub pole nie istnieje w przeszukiwanym zakresie | Potwierdź dokładną nazwę zakładki za pomocą FormField.Name podczas wyliczania |
Stan pola wyboru nie odzwierciedla się po ustawieniu Checked | Dokument nie został zapisany po modyfikacji | Zapisz dokument po modyfikacji; Checked jest odczytywany przy następnym dostępie |
Lista rozwijana DropDownSelectedIndex poza zakresem | Indeks nie odpowiada żadnemu elementowi w DropDownItems | Zweryfikuj indeks względem DropDownItems.Count przed ustawieniem |
| Wartość pola tekstowego nie została zastosowana | Użyto bezpośredniego przypisania właściwości zamiast SetTextInputValue | Wywołaj SetTextInputValue(newValue) na FormField |
FAQ
Jaka jest różnica między FormField a FieldFormText/FieldFormCheckBox/FieldFormDropDown?
FormField jest ogólnym węzłem reprezentującym dowolne starsze pole formularza, dostępny poprzez Document.Range.FormFields. FieldFormText, FieldFormCheckBox i FieldFormDropDown to klasy specyficzne dla pól (dziedziczące po Field) dla każdego typu pola, gdy pracuje się zamiast tego z ogólną kolekcją Field.
Jak uzyskać wszystkie wartości pól formularza w dokumencie?
Wylicz Document.Range.FormFields i odczytaj Name/Result dla każdego FormField.
Czy mogę dodać opcje do pola formularza rozwijanego?
Tak — FormField.DropDownItems jest DropDownItemCollection z Add(value), Insert(index, value) i Remove(name).
Czy są one takie same jak nowoczesne content controls?
Nie. Starsze pola formularza (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) istnieją przed modelem znaczników strukturalnych dokumentu Word (content control); oba mogą pojawić się w tym samym dokumencie.
API Reference Podsumowanie
| Klasa / Metoda | Opis |
|---|---|
Document.Range.FormFields | Bezpośredni dostęp do wszystkich pól formularza legacy w zakresie |
FormField | Ogólny węzeł pola formularza legacy: nazwa, typ, wynik, stan włączony |
FormFieldCollection | Zbiór obiektów FormField; indeksowany według nazwy zakładki, Remove() |
FieldFormText | Klasa pola FORMTEXT |
FieldFormCheckBox | FORMCHECKBOX klasa pola |
FieldFormDropDown | FORMDROPDOWN klasa pola |
TextFormFieldType | Wyliczenie formatu wejścia pola tekstowego (Regular, Number, Date, itp.) |
DropDownItemCollection | Edytowalna lista opcji pola rozwijanego |