Застарілі поля форми

Застарілі поля форми

Aspose.Words FOSS для .NET читає та маніпулює застарілими (до-контент-контролю) полями форми Word — полями вводу тексту, прапорцями та випадаючими списками — через клас FormField та його три спеціалізовані підкласи полів у Aspose.Words.Fields.


Читання значень полів форми

Document.Range.FormFields (a FormFieldCollection) забезпечує прямий доступ до кожного застарілого поля форми в діапазоні без ручного обходу дерева вузлів. Кожен FormField відкриває Name (ідентифікатор у стилі закладки, що використовується для посилання на поле), Type (значення FieldType, що визначає тип поля форми), Result (поточне значення), Enabled, а також текст підказки/статусу через HelpText/OwnHelp та StatusText/OwnStatus. SetTextInputValue(newValue) встановлює нове значення для текстового поля вводу безпосередньо. Індекс у FormFieldCollection за назвою закладки (наприклад, formFields["BookmarkName"]) дозволяє отримати конкретне поле, а Remove(formField) / RemoveAt(index) видаляють поля зі збірки.


Типи полів: текст, прапорець і випадаючий список

Три типи застарілих полів форми кожен має спеціальний клас: FieldFormText (поле FORMTEXT, що відповідає FieldType.FieldFormTextInput) для вводу довільного тексту, FieldFormCheckBox (поле FORMCHECKBOX) для булевого перемикача та FieldFormDropDown (поле FORMDROPDOWN) для списку вибору. На базовому вузлі FormField TextInputType (значення TextFormFieldType — Regular, Number, Date, CurrentDate, CurrentTime або Calculated) та TextInputFormat керують тим, як інтерпретувати та форматувати значення текстового поля; MaxLength обмежує довжину вводу; TextInputDefault надає значення за замовчуванням. Checked і Default застосовуються до полів прапорців, при цьому IsCheckBoxExactSize/CheckBoxSize контролюють їхній відображений розмір. Поля випадаючого списку зберігають свій список варіантів у DropDownItems, DropDownItemCollection, що підтримує Add, Insert, Remove, Contains і IndexOf, а також DropDownSelectedIndex для поточно обраного елемента.


Поради та кращі практики

  • Використовуйте Document.Range.FormFields замість ручного фільтрування Document.Range.Fields за типом — це прямий, типізований вхідний пункт для застарілих полів форми.
  • Встановіть CalculateOnExit, коли значення поля форми має запускати перерахунок залежних полів одразу після того, як користувач його залишить.
  • FormField.EntryMacro / ExitMacro посилаються на імена макросів VBA, налаштовані в оригінальному документі — їх читання не виконує жодного коду макроса.
  • Перевірте TextInputType перед тим, як парсити Result текстового поля як число або дату — поля Regular не накладають жодних обмежень формату.

Типові проблеми

ПроблемаПричинаВиправлення
Індексація FormFieldCollection за назвою закладки повертає nullНазва закладки поля форми не збігається, або поле не існує у зазначеному діапазоні пошукуПідтвердіть точну назву закладки за допомогою FormField.Name під час перебору
Стан прапорця не відображається після встановлення CheckedДокумент не збережено після зміниЗбережіть документ після внесення змін; Checked читається під час наступного доступу
Випадаючий список DropDownSelectedIndex поза діапазономІндекс не відповідає елементу в DropDownItemsПеревірте індекс щодо DropDownItems.Count перед встановленням
Значення текстового поля не застосованоВикористано пряме присвоєння властивості замість SetTextInputValueВикличте SetTextInputValue(newValue) на FormField

FAQ

У чому різниця між FormField і FieldFormText/FieldFormCheckBox/FieldFormDropDown?

FormField — це загальний вузол, що представляє будь-яке застаріле поле форми, доступний через Document.Range.FormFields. FieldFormText, FieldFormCheckBox і FieldFormDropDown — це класи, специфічні для полів (що успадковуються від Field) для кожного типу поля при роботі через загальну колекцію Field.

Як отримати всі значення полів форми в документі?

Перерахувати Document.Range.FormFields і прочитати Name/Result для кожного FormField.

Чи можу я додати варіанти до випадаючого поля форми?

Так — FormField.DropDownItems є DropDownItemCollection з Add(value), Insert(index, value) та Remove(name).

Чи це те саме, що сучасні content controls?

Ні. Спадкові поля форми (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) існували ще до моделі структурних тегів документа Word (content control); обидва можуть бути в одному документі.


API Reference Підсумок

Клас / МетодОпис
Document.Range.FormFieldsПрямий доступ до всіх застарілих полів форми у діапазоні
FormFieldЗагальний вузол застарілого поля форми: ім’я, тип, результат, стан увімкнення
FormFieldCollectionКолекція об’єктів FormField; індексатор за назвою закладки, Remove()
FieldFormTextFORMTEXT клас поля
FieldFormCheckBoxFORMCHECKBOX клас поля
FieldFormDropDownFORMDROPDOWN клас поля
TextFormFieldTypeEnum для формату вводу текстового поля (Regular, Number, Date тощо)
DropDownItemCollectionРедагований список варіантів випадаючого поля

Дивіться також

 Українська