Các trường biểu mẫu kế thừa

Các trường biểu mẫu kế thừa

Các trường biểu mẫu kế thừa

Aspose.Words FOSS cho .NET đọc và thao tác các trường biểu mẫu kế thừa của Word (trước khi có content-control) — trường nhập văn bản, hộp kiểm và trường danh sách thả xuống — thông qua lớp FormField và ba lớp con chuyên biệt của trường trong Aspose.Words.Fields.


Đọc giá trị trường biểu mẫu

Document.Range.FormFields (một FormFieldCollection) cung cấp quyền truy cập trực tiếp vào mọi trường biểu mẫu kế thừa trong một phạm vi mà không cần duyệt cây nút một cách thủ công. Mỗi FormField tiết lộ Name (định danh kiểu bookmark dùng để tham chiếu tới trường), Type (một giá trị FieldType xác định loại trường biểu mẫu), Result (giá trị hiện tại), Enabled, và văn bản trợ giúp/trạng thái thông qua HelpText/OwnHelp và StatusText/OwnStatus. SetTextInputValue(newValue) đặt một giá trị mới cho trường nhập văn bản một cách trực tiếp. Đánh chỉ mục vào FormFieldCollection theo tên bookmark (ví dụ formFields["BookmarkName"]) để lấy một trường cụ thể, và Remove(formField) / RemoveAt(index) xóa các trường khỏi bộ sưu tập.


Các loại trường Văn bản, Hộp kiểm và Danh sách thả xuống

Các ba loại trường biểu mẫu kế thừa mỗi đều có một lớp riêng: FieldFormText (trường FORMTEXT, tương ứng với FieldType.FieldFormTextInput) cho nhập văn bản tự do, FieldFormCheckBox (trường FORMCHECKBOX) cho chuyển đổi kiểu boolean, và FieldFormDropDown (trường FORMDROPDOWN) cho danh sách lựa chọn. Trên nút FormField nền tảng, TextInputType (một giá trị TextFormFieldType — Regular, Number, Date, CurrentDate, CurrentTime, hoặc Calculated) và TextInputFormat kiểm soát cách giá trị của trường văn bản được diễn giải và định dạng; MaxLength giới hạn độ dài đầu vào; TextInputDefault cung cấp giá trị mặc định. Checked và Default áp dụng cho các trường hộp kiểm, với IsCheckBoxExactSize/CheckBoxSize kiểm soát kích thước hiển thị của chúng. Các trường danh sách thả xuống chứa danh sách tùy chọn trong DropDownItems, một DropDownItemCollection hỗ trợ Add, Insert, Remove, Contains, và IndexOf, cùng với DropDownSelectedIndex cho mục hiện đang được chọn.


Mẹo và Thực hành tốt nhất

  • Sử dụng Document.Range.FormFields thay vì lọc Document.Range.Fields theo kiểu một cách thủ công — đây là điểm vào trực tiếp, đã được gõ kiểu cho các trường biểu mẫu kế thừa.
  • Đặt CalculateOnExit khi giá trị của trường biểu mẫu cần kích hoạt việc tính lại các trường phụ thuộc ngay khi người dùng rời khỏi nó.
  • FormField.EntryMacro / ExitMacro tham chiếu tới tên macro VBA được cấu hình trong tài liệu gốc — việc đọc chúng không thực thi bất kỳ mã macro nào.
  • Kiểm tra TextInputType trước khi phân tích Result của trường văn bản thành số hoặc ngày — các trường Regular không áp đặt bất kỳ ràng buộc định dạng nào.

Các vấn đề thường gặp

Vấn đềNguyên nhânCách khắc phục
Việc lập chỉ mục FormFieldCollection theo tên bookmark trả về nullTên bookmark của trường biểu mẫu không khớp, hoặc trường không tồn tại trong phạm vi được tìm kiếmXác nhận tên bookmark chính xác thông qua FormField.Name trong quá trình liệt kê
Trạng thái checkbox không được phản ánh sau khi thiết lập CheckedTài liệu không được lưu sau khi chỉnh sửaLưu tài liệu sau khi chỉnh sửa; Checked sẽ được đọc trong lần truy cập tiếp theo
Danh sách thả xuống DropDownSelectedIndex ngoài phạm viChỉ mục không tương ứng với mục nào trong DropDownItemsXác thực chỉ mục so với DropDownItems.Count trước khi thiết lập
Giá trị trường văn bản không được áp dụngĐã sử dụng gán thuộc tính trực tiếp thay vì SetTextInputValueGọi SetTextInputValue(newValue) trên FormField

FAQ

Sự khác nhau giữa FormField và FieldFormText/FieldFormCheckBox/FieldFormDropDown là gì?

FormField là nút chung đại diện cho bất kỳ trường biểu mẫu kế thừa nào, được truy cập qua Document.Range.FormFields. FieldFormText, FieldFormCheckBox và FieldFormDropDown là các lớp riêng cho từng trường (kế thừa từ Field) cho mỗi loại trường khi làm việc thông qua bộ sưu tập chung Field thay thế.

Làm thế nào để tôi lấy tất cả các giá trị trường biểu mẫu trong một tài liệu?

Liệt kê Document.Range.FormFields và đọc Name/Result trên mỗi FormField.

Tôi có thể thêm các tùy chọn vào trường biểu mẫu dạng thả xuống không?

Có — FormField.DropDownItems là một DropDownItemCollection với Add(value), Insert(index, value) và Remove(name).

Chúng có giống với các điều khiển nội dung hiện đại không?

Không. Các trường biểu mẫu kế thừa (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) tồn tại trước mô hình thẻ tài liệu có cấu trúc (điều khiển nội dung) của Word; cả hai có thể xuất hiện trong cùng một tài liệu.


API Reference Tóm tắt

Lớp / Phương thứcMô tả
Document.Range.FormFieldsTruy cập trực tiếp tới tất cả các trường biểu mẫu kế thừa trong một phạm vi
FormFieldNút trường biểu mẫu kế thừa chung: tên, kiểu, kết quả, trạng thái bật
FormFieldCollectionTập hợp các đối tượng FormField; bộ chỉ mục theo tên dấu trang, Remove()
FieldFormTextLớp trường FORMTEXT
FieldFormCheckBoxFORMCHECKBOX lớp trường
FieldFormDropDownFORMDROPDOWN lớp trường
TextFormFieldTypeEnum cho định dạng đầu vào của trường văn bản (Regular, Number, Date, v.v.)
DropDownItemCollectionDanh sách có thể chỉnh sửa của các tùy chọn trường thả xuống

Xem thêm

 Tiếng Việt