Zastaralá pole formuláře
Zastaralá formulářová pole
Aspose.Words FOSS pro .NET čte a manipuluje se staršími (před-content-control) formulářovými poli Wordu — textovými vstupy, zaškrtávacími políčky a rozbalovacími poli — pomocí třídy FormField a jejích tří specializovaných podtříd polí v Aspose.Words.Fields.
Čtení hodnot formulářových polí
Document.Range.FormFields (a FormFieldCollection) poskytuje přímý přístup ke každému starému formulářovému poli v rozsahu, aniž by bylo nutné ručně procházet strom uzlů. Každý FormField odhaluje Name (identifikátor ve stylu záložky používaný k odkazu na pole), Type (hodnota FieldType určující typ formulářového pole), Result (aktuální hodnota), Enabled a nápovědu/statusový text prostřednictvím HelpText/OwnHelp a StatusText/OwnStatus. SetTextInputValue(newValue) nastaví novou hodnotu pro textové vstupní pole přímo. Indexujte do FormFieldCollection pomocí názvu záložky (např. formFields["BookmarkName"]) pro získání konkrétního pole a Remove(formField)/RemoveAt(index) odstraní pole ze sbírky.
Typy textových, zaškrtávacích a rozbalovacích polí
Každý ze tří typů starých formulářových polí má vlastní třídu: FieldFormText (pole FORMTEXT, odpovídající FieldType.FieldFormTextInput) pro volný textový vstup, FieldFormCheckBox (pole FORMCHECKBOX) pro logický přepínač a FieldFormDropDown (pole FORMDROPDOWN) pro výběrový seznam. Na podkladovém uzlu FormField TextInputType (hodnota TextFormFieldType — Regular, Number, Date, CurrentDate, CurrentTime nebo Calculated) a TextInputFormat řídí, jak je hodnota textového pole interpretována a formátována; MaxLength omezí délku vstupu; TextInputDefault poskytuje výchozí hodnotu. Checked a Default se vztahují na zaškrtávací pole, přičemž IsCheckBoxExactSize/CheckBoxSize řídí jeho vykreslenou velikost. Rozbalovací pole uchovává svůj seznam možností v DropDownItems, DropDownItemCollection podporující Add, Insert, Remove, Contains a IndexOf, plus DropDownSelectedIndex pro aktuálně vybranou položku.
Tipy a osvědčené postupy
- Použijte
Document.Range.FormFieldsmísto ručního filtrováníDocument.Range.Fieldspodle typu — je to přímý, typovaný vstupní bod pro staré formulářové pole. - Nastavte
CalculateOnExit, když hodnota formulářového pole má po opuštění pole uživatelem okamžitě spustit přepočet závislých polí. FormField.EntryMacro/ExitMacroodkazují na názvy VBA maker nakonfigurované v původním dokumentu — jejich čtení nespouští žádný kód makra.- Zkontrolujte
TextInputTypepřed tím, než budete parsovatResulttextového pole jako číslo nebo datum — poleRegularnevyžadují žádné formátové omezení.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
Indexování FormFieldCollection podle názvu záložky vrací null | Název záložky formulářového pole neodpovídá, nebo pole v prohledávaném rozsahu neexistuje | Potvrďte přesný název záložky pomocí FormField.Name při výčtu |
Stav zaškrtávacího políčka se neodráží po nastavení Checked | Dokument nebyl po úpravě uložen | Uložte dokument po úpravě; Checked se načte při dalším přístupu |
Rozbalovací seznam DropDownSelectedIndex mimo rozsah | Index neodpovídá položce v DropDownItems | Ověřte index vůči DropDownItems.Count před nastavením |
| Hodnota textového pole nebyla použita | Bylo použito přímé přiřazení vlastnosti místo SetTextInputValue | Zavolejte SetTextInputValue(newValue) na FormField |
FAQ
Jaký je rozdíl mezi FormField a FieldFormText/FieldFormCheckBox/FieldFormDropDown?
FormField je obecný uzel představující jakékoli staré formulářové pole, přístupný přes Document.Range.FormFields. FieldFormText, FieldFormCheckBox a FieldFormDropDown jsou třídy specifické pro pole (odvozené od Field) pro každý typ pole při práci s obecným souborem Field.
Jak získám všechny hodnoty formulářových polí v dokumentu?
Vyjmenujte Document.Range.FormFields a přečtěte Name/Result u každého FormField.
Mohu přidat možnosti do rozbalovacího formulářového pole?
Ano — FormField.DropDownItems je DropDownItemCollection s Add(value), Insert(index, value) a Remove(name).
Jsou tyto stejné jako moderní obsahové ovládací prvky?
Ne. Legacy formulářová pole (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) předcházejí modelu strukturovaných značek dokumentu (obsahový ovládací prvek) ve Wordu; obě mohou být ve stejném dokumentu.
API Reference Shrnutí
| Třída / Metoda | Popis: |
|---|---|
Document.Range.FormFields | Přímý přístup ke všem legacy polím formuláře v rozsahu |
FormField | Obecný zastaralý uzel pole formuláře: název, typ, výsledek, stav povolení |
FormFieldCollection | Kolekce objektů FormField; indexátor podle názvu záložky, Remove() |
FieldFormText | FORMTEXT třída pole |
FieldFormCheckBox | FORMCHECKBOX třída pole |
FieldFormDropDown | FORMDROPDOWN třída pole |
TextFormFieldType | Enum pro vstupní formát textového pole (Regular, Number, Date, atd.) |
DropDownItemCollection | Upravovatelný seznam možností rozbalovacího pole |