Bidang Formulir Warisan
Bidang Formulir Legacy
Aspose.Words FOSS untuk .NET membaca dan memanipulasi bidang formulir legacy Word (sebelum content-control) — bidang input teks, kotak centang, dan bidang drop-down — melalui kelas FormField dan tiga subclass bidang khususnya di Aspose.Words.Fields.
Membaca Nilai Bidang Formulir
Document.Range.FormFields (sebuah FormFieldCollection) memberikan akses langsung ke setiap bidang formulir legacy dalam suatu rentang tanpa harus menelusuri pohon node secara manual. Setiap FormField mengekspos Name (identifier gaya bookmark yang digunakan untuk merujuk ke bidang), Type (nilai FieldType yang mengidentifikasi jenis bidang formulir), Result (nilai saat ini), Enabled, serta teks bantuan/status melalui HelpText/OwnHelp dan StatusText/OwnStatus. SetTextInputValue(newValue) menetapkan nilai baru untuk bidang input teks secara langsung. Indeks ke FormFieldCollection dengan nama bookmark (misalnya formFields["BookmarkName"]) untuk mengambil bidang tertentu, dan Remove(formField) / RemoveAt(index) menghapus bidang dari koleksi.
Jenis Bidang Teks, Kotak Centang, dan Drop-Down
Ketiga jenis bidang formulir legacy masing-masing memiliki kelas khusus: FieldFormText (bidang FORMTEXT, yang sesuai dengan FieldType.FieldFormTextInput) untuk input teks bebas, FieldFormCheckBox (bidang FORMCHECKBOX) untuk saklar boolean, dan FieldFormDropDown (bidang FORMDROPDOWN) untuk daftar pilihan. Pada node FormField yang mendasari, TextInputType (nilai TextFormFieldType — Regular, Number, Date, CurrentDate, CurrentTime, atau Calculated) dan TextInputFormat mengontrol bagaimana nilai bidang teks diinterpretasikan dan diformat; MaxLength membatasi panjang inputnya; TextInputDefault menyediakan nilai defaultnya. Checked dan Default berlaku untuk bidang kotak centang, dengan IsCheckBoxExactSize/CheckBoxSize mengontrol ukuran tampilanannya. Bidang drop-down membawa daftar opsinya di DropDownItems, sebuah DropDownItemCollection yang mendukung Add, Insert, Remove, Contains, dan IndexOf, serta DropDownSelectedIndex untuk item yang saat ini dipilih.
Tips dan Praktik Terbaik
- Gunakan
Document.Range.FormFieldsdaripada menyaringDocument.Range.Fieldssecara manual berdasarkan tipe — itu merupakan titik masuk yang langsung dan bertipe untuk bidang formulir warisan. - Setel
CalculateOnExitketika nilai bidang formulir harus memicu perhitungan ulang bidang tergantung segera setelah pengguna meninggalkannya. FormField.EntryMacro/ExitMacromerujuk pada nama makro VBA yang dikonfigurasikan dalam dokumen asli — membaca mereka tidak mengeksekusi kode makro apa pun.- Periksa
TextInputTypesebelum menguraiResultbidang teks sebagai angka atau tanggal — bidangRegulartidak memberlakukan batasan format.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
Pengindeksan FormFieldCollection berdasarkan nama bookmark mengembalikan null | Nama bookmark bidang formulir tidak cocok, atau bidang tersebut tidak ada dalam rentang yang dicari | Konfirmasi nama bookmark yang tepat melalui FormField.Name saat enumerasi |
Status kotak centang tidak tercermin setelah mengatur Checked | Dokumen tidak disimpan setelah modifikasi | Simpan dokumen setelah dimodifikasi; Checked dibaca pada akses berikutnya |
Dropdown DropDownSelectedIndex di luar jangkauan | Indeks tidak sesuai dengan item dalam DropDownItems | Validasi indeks terhadap DropDownItems.Count sebelum mengatur |
| Nilai bidang teks tidak diterapkan | Menggunakan penugasan properti langsung alih-alih SetTextInputValue | Panggil SetTextInputValue(newValue) pada FormField |
FAQ
Apa perbedaan antara FormField dan FieldFormText/FieldFormCheckBox/FieldFormDropDown?
FormField adalah node generik yang mewakili bidang formulir warisan apa pun, diakses melalui Document.Range.FormFields. FieldFormText, FieldFormCheckBox, dan FieldFormDropDown adalah kelas khusus bidang (yang diturunkan dari Field) untuk setiap tipe bidang ketika bekerja melalui koleksi umum Field sebagai gantinya.
Bagaimana cara saya mendapatkan semua nilai bidang formulir dalam dokumen?
Enumerasikan Document.Range.FormFields dan baca Name/Result pada setiap FormField.
Bisakah saya menambahkan opsi ke bidang formulir drop-down?
Ya — FormField.DropDownItems adalah DropDownItemCollection dengan Add(value), Insert(index, value), dan Remove(name).
Apakah ini sama dengan content controls modern?
Tidak. Formulir warisan (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) ada sebelum model tag dokumen terstruktur Word (content control); keduanya dapat muncul dalam dokumen yang sama.
API Reference Ringkasan
| Kelas / Metode | Deskripsi |
|---|---|
Document.Range.FormFields | Akses langsung ke semua bidang formulir warisan dalam rentang |
FormField | Node bidang formulir warisan generik: name, type, result, enabled state |
FormFieldCollection | Koleksi objek FormField; diindeks berdasarkan nama bookmark, Remove() |
FieldFormText | FORMTEXT kelas bidang |
FieldFormCheckBox | FORMCHECKBOX kelas bidang |
FieldFormDropDown | FORMDROPDOWN kelas bidang |
TextFormFieldType | Enum untuk format masukan bidang teks (Regular, Number, Date, dll.) |
DropDownItemCollection | Daftar yang dapat diedit untuk opsi bidang drop-down |