Campos de Formulário Legados

Campos de Formulário Legados

Campos de Formulário Legados

Aspose.Words FOSS para .NET lê e manipula os campos de formulário legados (pré-controle-de-conteúdo) do Word — campos de entrada de texto, caixa de seleção e lista suspensa — através da classe FormField e suas três subclasses de campo especializadas em Aspose.Words.Fields.


Lendo Valores de Campos de Formulário

Document.Range.FormFields (um FormFieldCollection) fornece acesso direto a cada campo de formulário legado em um intervalo sem percorrer manualmente a árvore de nós. Cada FormField expõe Name (o identificador no estilo de marcador usado para referenciar o campo), Type (um valor FieldType que identifica que tipo de campo de formulário é), Result (o valor atual), Enabled, e texto de ajuda/estado via HelpText/OwnHelp e StatusText/OwnStatus. SetTextInputValue(newValue) define um novo valor para um campo de entrada de texto diretamente. Indexe em FormFieldCollection pelo nome do marcador (por exemplo, formFields["BookmarkName"]) para recuperar um campo específico, e Remove(formField) / RemoveAt(index) exclui campos da coleção.


Tipos de Campo de Texto, Caixa de Seleção e Lista Suspensa

Os três tipos de campo de formulário legados cada um tem uma classe dedicada: FieldFormText (o campo FORMTEXT, correspondente a FieldType.FieldFormTextInput) para entrada de texto livre, FieldFormCheckBox (o campo FORMCHECKBOX) para um alternador booleano, e FieldFormDropDown (o campo FORMDROPDOWN) para uma lista de seleção. No nó subjacente FormField, TextInputType (um valor TextFormFieldType — Regular, Number, Date, CurrentDate, CurrentTime ou Calculated) e TextInputFormat controlam como o valor de um campo de texto é interpretado e formatado; MaxLength delimita o comprimento da entrada; TextInputDefault fornece seu valor padrão. Checked e Default aplicam-se a campos de caixa de seleção, com IsCheckBoxExactSize/CheckBoxSize controlando seu tamanho renderizado. Campos de lista suspensa carregam sua lista de opções em DropDownItems, um DropDownItemCollection que suporta Add, Insert, Remove, Contains e IndexOf, além de DropDownSelectedIndex para o item atualmente selecionado.


Dicas e Melhores Práticas

  • Use Document.Range.FormFields em vez de filtrar manualmente Document.Range.Fields por tipo — é o ponto de entrada direto e tipado para campos de formulário legados.
  • Defina CalculateOnExit quando o valor de um campo de formulário deve acionar o recálculo de campos dependentes assim que o usuário o deixar.
  • FormField.EntryMacro / ExitMacro referenciam nomes de macros VBA configurados no documento original — lê-los não executa nenhum código de macro.
  • Verifique TextInputType antes de analisar o Result de um campo de texto como número ou data — campos Regular não impõem restrição de formato.

Problemas comuns

ProblemaCausaCorreção
Indexar FormFieldCollection pelo nome do marcador retorna nullO nome do marcador do campo de formulário não corresponde, ou o campo não existe no intervalo pesquisadoConfirme o nome exato do marcador via FormField.Name durante a enumeração
O estado da caixa de seleção não é refletido após definir CheckedDocumento não salvo após a modificaçãoSalve o documento após a modificação; Checked é lido no próximo acesso
Lista suspensa DropDownSelectedIndex fora do intervaloO índice não corresponde a um item em DropDownItemsValide o índice em relação a DropDownItems.Count antes de definir
Valor do campo de texto não aplicadoUsou atribuição direta de propriedade em vez de SetTextInputValueChame SetTextInputValue(newValue) no FormField

FAQ

Qual é a diferença entre FormField e FieldFormText/FieldFormCheckBox/FieldFormDropDown?

FormField é o nó genérico que representa qualquer campo de formulário legado, acessado através de Document.Range.FormFields. FieldFormText, FieldFormCheckBox e FieldFormDropDown são as classes específicas de campo (derivadas de Field) para cada tipo de campo ao trabalhar através da coleção geral Field.

Como obtenho todos os valores dos campos de formulário em um documento?

Enumere Document.Range.FormFields e leia Name/Result em cada FormField.

Posso adicionar opções a um campo de formulário suspenso?

Sim — FormField.DropDownItems é um DropDownItemCollection com Add(value), Insert(index, value) e Remove(name).

Esses são os mesmos que os controles de conteúdo modernos?

Não. Campos de formulário legados (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) antecedem o modelo de tags de documento estruturado (controle de conteúdo) do Word; ambos podem aparecer no mesmo documento.


API Reference Resumo

Classe / MétodoDescrição
Document.Range.FormFieldsAcesso direto a todos os campos de formulário legados em um intervalo
FormFieldNó genérico de campo de formulário legado: nome, tipo, resultado, estado habilitado
FormFieldCollectionColeção de objetos FormField; indexador por nome de marcador, Remove()
FieldFormTextclasse de campo FORMTEXT
FieldFormCheckBoxFORMCHECKBOX classe de campo
FieldFormDropDownFORMDROPDOWN classe de campo
TextFormFieldTypeEnum para formato de entrada de campo de texto (Regular, Number, Date, etc.)
DropDownItemCollectionLista editável das opções de um campo suspenso

Ver também

 Português