ฟิลด์ฟอร์มแบบ 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
FieldFormCheckBoxFORMCHECKBOX คลาสฟิลด์
FieldFormDropDownFORMDROPDOWN คลาสฟิลด์
TextFormFieldTypeEnum สำหรับรูปแบบการป้อนข้อมูลของฟิลด์ข้อความ (Regular, Number, Date, ฯลฯ)
DropDownItemCollectionรายการที่แก้ไขได้ของตัวเลือกในฟิลด์ดรอปดาวน์

ดูเพิ่มเติม

 ภาษาไทย