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.FormFields zamiast ręcznego filtrowania Document.Range.Fields wedł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 / ExitMacro odwołują się do nazw makr VBA skonfigurowanych w oryginalnym dokumencie — ich odczyt nie uruchamia żadnego kodu makra.
  • Sprawdź TextInputType przed analizą Result pola tekstowego jako liczby lub daty — pola Regular nie narzucają żadnych ograniczeń formatowych.

Typowe problemy

ProblemPrzyczynaRozwiązanie
Indeksowanie FormFieldCollection po nazwie zakładki zwraca nullNazwa zakładki pola formularza nie pasuje, lub pole nie istnieje w przeszukiwanym zakresiePotwierdź dokładną nazwę zakładki za pomocą FormField.Name podczas wyliczania
Stan pola wyboru nie odzwierciedla się po ustawieniu CheckedDokument nie został zapisany po modyfikacjiZapisz dokument po modyfikacji; Checked jest odczytywany przy następnym dostępie
Lista rozwijana DropDownSelectedIndex poza zakresemIndeks nie odpowiada żadnemu elementowi w DropDownItemsZweryfikuj indeks względem DropDownItems.Count przed ustawieniem
Wartość pola tekstowego nie została zastosowanaUżyto bezpośredniego przypisania właściwości zamiast SetTextInputValueWywoł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 / MetodaOpis
Document.Range.FormFieldsBezpośredni dostęp do wszystkich pól formularza legacy w zakresie
FormFieldOgólny węzeł pola formularza legacy: nazwa, typ, wynik, stan włączony
FormFieldCollectionZbiór obiektów FormField; indeksowany według nazwy zakładki, Remove()
FieldFormTextKlasa pola FORMTEXT
FieldFormCheckBoxFORMCHECKBOX klasa pola
FieldFormDropDownFORMDROPDOWN klasa pola
TextFormFieldTypeWyliczenie formatu wejścia pola tekstowego (Regular, Number, Date, itp.)
DropDownItemCollectionEdytowalna lista opcji pola rozwijanego

Zobacz także

 Polski