Campi del modulo legacy

Campi modulo legacy

Aspose.Words FOSS per .NET legge e manipola i campi modulo legacy di Word (pre-content-control) — campi di input testo, casella di controllo e a discesa — tramite la classe FormField e le sue tre sottoclassi specializzate di campo in Aspose.Words.Fields.


Lettura dei valori dei campi modulo

Document.Range.FormFields (un FormFieldCollection) fornisce accesso diretto a ogni campo modulo legacy in un intervallo senza dover percorrere manualmente l’albero dei nodi. Ogni FormField espone Name (l’identificatore in stile segnalibro usato per fare riferimento al campo), Type (un valore FieldType che identifica il tipo di campo modulo), Result (il valore corrente), Enabled, e il testo di aiuto/status tramite HelpText/OwnHelp e StatusText/OwnStatus. SetTextInputValue(newValue) imposta direttamente un nuovo valore per un campo di input testo. Indicizza FormFieldCollection per nome segnalibro (ad es. formFields["BookmarkName"]) per recuperare un campo specifico, e Remove(formField) / RemoveAt(index) eliminano i campi dalla collezione.


Tipi di campo testo, casella di controllo e a discesa

I tre tipi di campo modulo legacy hanno ciascuno una classe dedicata: FieldFormText (il campo FORMTEXT, corrispondente a FieldType.FieldFormTextInput) per input di testo libero, FieldFormCheckBox (il campo FORMCHECKBOX) per un interruttore booleano, e FieldFormDropDown (il campo FORMDROPDOWN) per una lista di selezione. Sul nodo FormField sottostante, TextInputType (un valore TextFormFieldType — Regular, Number, Date, CurrentDate, CurrentTime o Calculated) e TextInputFormat controllano come il valore di un campo di testo è interpretato e formattato; MaxLength limita la lunghezza dell’input; TextInputDefault fornisce il valore predefinito. Checked e Default si applicano ai campi casella di controllo, con IsCheckBoxExactSize/CheckBoxSize che controllano la dimensione renderizzata. I campi a discesa contengono la loro lista di opzioni in DropDownItems, un DropDownItemCollection che supporta Add, Insert, Remove, Contains e IndexOf, più DropDownSelectedIndex per l’elemento attualmente selezionato.


Suggerimenti e migliori pratiche

  • Usa Document.Range.FormFields invece di filtrare manualmente Document.Range.Fields per tipo — è il punto di ingresso diretto e tipizzato per i campi modulo legacy.
  • Imposta CalculateOnExit quando il valore di un campo modulo deve attivare il ricalcolo dei campi dipendenti non appena l’utente lo abbandona.
  • FormField.EntryMacro / ExitMacro fanno riferimento ai nomi delle macro VBA configurati nel documento originale — leggerli non esegue alcun codice macro.
  • Controlla TextInputType prima di analizzare il Result di un campo di testo come numero o data — i campi Regular non impongono alcuna restrizione di formato.

Problemi comuni

ProblemaCauseCorrezione
Indicizzazione di FormFieldCollection per nome segnalibro restituisce nullIl nome segnalibro del campo del modulo non corrisponde, oppure il campo non esiste nell’intervallo cercatoConferma il nome segnalibro esatto tramite FormField.Name durante l’enumerazione
Lo stato della casella di controllo non viene riflesso dopo aver impostato CheckedDocumento non salvato dopo la modificaSalva il documento dopo la modifica; Checked viene letto al successivo accesso
Menu a discesa DropDownSelectedIndex fuori dall’intervalloL’indice non corrisponde a un elemento in DropDownItemsConvalida l’indice rispetto a DropDownItems.Count prima di impostarlo
Valore del campo di testo non applicatoUsata assegnazione diretta della proprietà invece di SetTextInputValueChiama SetTextInputValue(newValue) sul FormField

FAQ

Qual è la differenza tra FormField e FieldFormText/FieldFormCheckBox/FieldFormDropDown?

FormField è il nodo generico che rappresenta qualsiasi campo modulo legacy, raggiungibile tramite Document.Range.FormFields. FieldFormText, FieldFormCheckBox e FieldFormDropDown sono le classi specifiche del campo (derivate da Field) per ogni tipo di campo quando si lavora invece attraverso la collezione generale Field.

Come posso ottenere tutti i valori dei campi modulo in un documento?

Elenca Document.Range.FormFields e leggi Name/Result su ogni FormField.

Posso aggiungere opzioni a un campo modulo a discesa?

Sì — FormField.DropDownItems è un DropDownItemCollection con Add(value), Insert(index, value) e Remove(name).

Sono questi gli stessi dei controlli di contenuto moderni?

No. I campi modulo legacy (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) precedono il modello di tag di documento strutturato (controllo di contenuto) di Word; entrambi possono comparire nello stesso documento.


API Reference Riepilogo

Classe / MetodoDescrizione
Document.Range.FormFieldsAccesso diretto a tutti i campi del modulo legacy in un intervallo
FormFieldNodo generico di campo modulo legacy: nome, tipo, risultato, stato abilitato
FormFieldCollectionRaccolta di oggetti FormField; indicizzatore per nome segnalibro, Remove()
FieldFormTextFORMTEXT classe campo
FieldFormCheckBoxFORMCHECKBOX classe del campo
FieldFormDropDownFORMDROPDOWN classe del campo
TextFormFieldTypeEnum per il formato di input del campo di testo (Regular, Number, Date, ecc.)
DropDownItemCollectionElenco modificabile delle opzioni di un campo a discesa

Vedi anche

 Italiano