Câmpuri de formular moștenite
Câmpuri de formular vechi
Aspose.Words FOSS pentru .NET citește și manipulează câmpurile de formular vechi ale Word (pre-control de conținut) — câmpuri de intrare text, casetă de selectare și liste derulante — prin clasa FormField și cele trei subclase specializate ale câmpurilor din Aspose.Words.Fields.
Citirea valorilor câmpurilor de formular
Document.Range.FormFields (un FormFieldCollection) oferă acces direct la fiecare câmp de formular vechi dintr-un interval fără a parcurge manual arborele de noduri. Fiecare FormField expune Name (identificatorul de tip marcaj folosit pentru a referenția câmpul), Type (o valoare FieldType care identifică tipul de câmp de formular), Result (valoarea curentă), Enabled, și text de ajutor/status prin HelpText/OwnHelp și StatusText/OwnStatus. SetTextInputValue(newValue) stabilește o valoare nouă pentru un câmp de intrare text direct. Indexați în FormFieldCollection prin numele marcajului (de ex. formFields["BookmarkName"]) pentru a recupera un câmp specific, și Remove(formField) / RemoveAt(index) șterge câmpuri din colecție.
Tipuri de câmpuri text, casetă de selectare și listă derulantă
Fiecare dintre cele trei tipuri de câmpuri de formular vechi are o clasă dedicată: FieldFormText (câmpul FORMTEXT, corespunzător lui FieldType.FieldFormTextInput) pentru intrare de text liber, FieldFormCheckBox (câmpul FORMCHECKBOX) pentru o comutare booleană, și FieldFormDropDown (câmpul FORMDROPDOWN) pentru o listă de selecție. Pe nodul FormField sublicențiat, TextInputType (o valoare TextFormFieldType — Regular, Number, Date, CurrentDate, CurrentTime sau Calculated) și TextInputFormat controlează modul în care valoarea unui câmp text este interpretată și formatată; MaxLength limitează lungimea intrării; TextInputDefault furnizează valoarea implicită. Checked și Default se aplică câmpurilor casetă de selectare, iar IsCheckBoxExactSize/CheckBoxSize controlează dimensiunea redată. Câmpurile listă derulantă conțin lista de opțiuni în DropDownItems, un DropDownItemCollection care suportă Add, Insert, Remove, Contains și IndexOf, plus DropDownSelectedIndex pentru elementul selectat în prezent.
Sfaturi și cele mai bune practici
- Utilizați
Document.Range.FormFieldsîn loc să filtrați manualDocument.Range.Fieldspe tip — este punctul de intrare direct, tipizat pentru câmpurile de formular moștenite. - Setați
CalculateOnExitcând valoarea unui câmp de formular ar trebui să declanșeze recalcularea câmpurilor dependente imediat ce utilizatorul îl părăsește. FormField.EntryMacro/ExitMacrofac referire la numele macro-urilor VBA configurate în documentul original — citirea lor nu execută niciun cod macro.- Verificați
TextInputTypeînainte de a analizaResultunui câmp text ca număr sau dată — câmpurileRegularnu impun nicio constrângere de format.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
Indexarea FormFieldCollection după numele semnului de carte returnează null | Numele semnului de carte al câmpului de formular nu se potrivește sau câmpul nu există în intervalul căutat | Confirmă numele exact al semnului de carte prin FormField.Name în timpul enumerării |
Starea casetei de bifare nu este reflectată după setarea Checked | Documentul nu a fost salvat după modificare | Salvați documentul după modificare; Checked este citit la următoarea accesare |
Lista derulantă DropDownSelectedIndex este în afara intervalului | Indicele nu corespunde unui element din DropDownItems | Validați indicele față de DropDownItems.Count înainte de a-l seta |
| Valoarea câmpului de text nu a fost aplicată | S-a utilizat atribuirea directă a proprietății în loc de SetTextInputValue | Apelați SetTextInputValue(newValue) pe FormField |
FAQ
Care este diferența dintre FormField și FieldFormText/FieldFormCheckBox/FieldFormDropDown?
FormField este nodul generic care reprezintă orice câmp de formular moștenit, accesat prin Document.Range.FormFields. FieldFormText, FieldFormCheckBox și FieldFormDropDown sunt clasele specifice câmpului (derivate din Field) pentru fiecare tip atunci când se lucrează prin colecția generală Field.
Cum pot obține toate valorile câmpurilor de formular dintr-un document?
Enumerați Document.Range.FormFields și citiți Name/Result pe fiecare FormField.
Pot adăuga opțiuni la un câmp de formular derulant?
Da — FormField.DropDownItems este un DropDownItemCollection cu Add(value), Insert(index, value) și Remove(name).
Sunt acestea aceleași cu controalele de conținut moderne?
Nu. Câmpurile de formular vechi (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) sunt anterioare modelului de etichetă de document structurat (control de conținut) al Word; ambele pot apărea în același document.
API Reference Rezumat
| Clasă / Metodă | Descriere: |
|---|---|
Document.Range.FormFields | Acces direct la toate câmpurile de formular moștenite dintr-un interval |
FormField | Nod generic de câmp de formular moștenit: nume, tip, rezultat, stare activată |
FormFieldCollection | Colecție de obiecte FormField; indexator după numele marcajului, Remove() |
FieldFormText | Clasa de câmp FORMTEXT |
FieldFormCheckBox | FORMCHECKBOX clasă de câmp |
FieldFormDropDown | FORMDROPDOWN clasă de câmp |
TextFormFieldType | Enum pentru formatul de intrare al câmpului text (Regular, Number, Date, etc.) |
DropDownItemCollection | Listă editabilă a opțiunilor unui câmp derulant |