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.FormFieldsthay vì lọcDocument.Range.Fieldstheo 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
CalculateOnExitkhi 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/ExitMacrotham 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
TextInputTypetrước khi phân tíchResultcủa trường văn bản thành số hoặc ngày — các trườngRegularkhô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ân | Cách khắc phục |
|---|---|---|
Việc lập chỉ mục FormFieldCollection theo tên bookmark trả về null | Tê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ếm | Xá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 Checked | Tài liệu không được lưu sau khi chỉnh sửa | Lư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 vi | Chỉ mục không tương ứng với mục nào trong DropDownItems | Xá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ì SetTextInputValue | Gọ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ức | Mô tả |
|---|---|
Document.Range.FormFields | Truy 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 |
FormField | Nút trường biểu mẫu kế thừa chung: tên, kiểu, kết quả, trạng thái bật |
FormFieldCollection | Tập hợp các đối tượng FormField; bộ chỉ mục theo tên dấu trang, Remove() |
FieldFormText | Lớp trường FORMTEXT |
FieldFormCheckBox | FORMCHECKBOX lớp trường |
FieldFormDropDown | FORMDROPDOWN lớp trường |
TextFormFieldType | Enum cho định dạng đầu vào của trường văn bản (Regular, Number, Date, v.v.) |
DropDownItemCollection | Danh sách có thể chỉnh sửa của các tùy chọn trường thả xuống |