ฟิลด์ฟอร์มแบบ Legacy
ฟิลด์ฟอร์มแบบเก่า
Aspose.Words FOSS สำหรับ .NET อ่านและจัดการฟิลด์ฟอร์มแบบเก่า (ก่อน content-control) ของ Word — ฟิลด์ข้อความ, ฟิลด์เช็คบ็อกซ์, และฟิลด์ดรอปดาวน์ — ผ่านคลาส FormField และซับคลาสฟิลด์พิเศษสามตัวใน Aspose.Words.Fields.
การอ่านค่าฟิลด์ฟอร์ม
Document.Range.FormFields (เป็น FormFieldCollection) ให้การเข้าถึงโดยตรงกับทุกฟิลด์ฟอร์มแบบเก่าในช่วงหนึ่งโดยไม่ต้องเดินผ่านโครงสร้างโหนดด้วยตนเอง. แต่ละ FormField เปิดเผย Name (ตัวระบุแบบ bookmark ที่ใช้ในการอ้างอิงฟิลด์), Type (ค่าประเภท FieldType ที่บ่งชี้ว่าฟิลด์ฟอร์มประเภทใด), Result (ค่าปัจจุบัน), Enabled, และข้อความช่วยเหลือ/สถานะผ่าน HelpText/OwnHelp และ StatusText/OwnStatus. SetTextInputValue(newValue) ตั้งค่ามาใหม่สำหรับฟิลด์ข้อความโดยตรง. เข้าถึง FormFieldCollection ด้วยชื่อ bookmark (เช่น 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 ตามชื่อ bookmark คืนค่า null | ชื่อ bookmark ของฟิลด์แบบฟอร์มไม่ตรงกัน หรือฟิลด์ไม่มีอยู่ในช่วงที่ค้นหา | ยืนยันชื่อ bookmark ที่ถูกต้องผ่าน FormField.Name ขณะทำการ enumerate |
สถานะของ checkbox ไม่แสดงผลหลังจากตั้งค่า 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).
สิ่งเหล่านี้เป็นคอนเทนต์คอนโทรลสมัยใหม่เหมือนกันหรือไม่?
ไม่. ฟิลด์ฟอร์มแบบ Legacy (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) มีมาก่อนโมเดลแท็กเอกสารที่มีโครงสร้างของ Word (content control); ทั้งสองสามารถปรากฏในเอกสารเดียวกันได้.
API Reference สรุป
| คลาส / เมธอด | คำอธิบาย |
|---|---|
Document.Range.FormFields | การเข้าถึงโดยตรงของฟิลด์ฟอร์มแบบเดิมทั้งหมดในช่วง |
FormField | โหนดฟิลด์ฟอร์มแบบเดิมทั่วไป: ชื่อ, ประเภท, ผลลัพธ์, สถานะเปิดใช้งาน |
FormFieldCollection | คอลเลกชันของอ็อบเจกต์ FormField; ดัชนีโดยชื่อบุ๊กมาร์ก, Remove() |
FieldFormText | คลาสฟิลด์ FORMTEXT |
FieldFormCheckBox | FORMCHECKBOX คลาสฟิลด์ |
FieldFormDropDown | FORMDROPDOWN คลาสฟิลด์ |
TextFormFieldType | Enum สำหรับรูปแบบการป้อนข้อมูลของฟิลด์ข้อความ (Regular, Number, Date, ฯลฯ) |
DropDownItemCollection | รายการที่แก้ไขได้ของตัวเลือกในฟิลด์ดรอปดาวน์ |