Παλαιά Πεδία Φόρμας
Παλαιά Πεδία Φόρμας
Aspose.Words FOSS για .NET διαβάζει και χειρίζεται τα κληρονομικά (προ-έλεγχο περιεχομένου) πεδία φόρμας του Word — πεδία κειμένου, πλαίσια ελέγχου και πεδία πτυσσόμενης λίστας — μέσω της κλάσης FormField και των τριών εξειδικευμένων υποκλάσεων πεδίων σε Aspose.Words.Fields.
Ανάγνωση Τιμών Πεδίου Φόρμας
Document.Range.FormFields (ένα FormFieldCollection) παρέχει άμεση πρόσβαση σε κάθε κληρονομικό πεδίο φόρμας σε μια περιοχή χωρίς να χρειάζεται να διασχίζεται το δέντρο κόμβων χειροκίνητα. Κάθε FormField εκθέτει το Name (το αναγνωριστικό τύπου σελιδοδείκτη που χρησιμοποιείται για την αναφορά στο πεδίο), το Type (μια τιμή FieldType που προσδιορίζει τον τύπο του πεδίου φόρμας), το Result (την τρέχουσα τιμή), το Enabled, και κείμενο βοήθειας/κατάστασης μέσω HelpText/OwnHelp και StatusText/OwnStatus. Το SetTextInputValue(newValue) ορίζει νέα τιμή για ένα πεδίο κειμένου άμεσα. Δείξτε στο FormFieldCollection με το όνομα σελιδοδείκτη (π.χ. 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 με όνομα σελιδοδείκτη επιστρέφει null | Το όνομα σελιδοδείκτη του πεδίου φόρμας δεν ταιριάζει, ή το πεδίο δεν υπάρχει στην αναζητούμενη περιοχή | Επιβεβαιώστε το ακριβές όνομα σελιδοδείκτη μέσω του FormField.Name κατά την απαρίθμηση |
Η κατάσταση του πλαισίου ελέγχου δεν αντανακλάται μετά τη ρύθμιση του 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).
Είναι αυτά τα ίδια με τα σύγχρονα στοιχεία ελέγχου περιεχομένου;
Όχι. Τα παλαιά πεδία φόρμας (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) προηγήθηκαν του μοντέλου ετικετών δομημένου εγγράφου (στοιχείο ελέγχου περιεχομένου) του Word· και τα δύο μπορούν να εμφανιστούν στο ίδιο έγγραφο.
API Reference Περίληψη
| Κατηγορία / Μέθοδος | Περιγραφή |
|---|---|
Document.Range.FormFields | Άμεση πρόσβαση σε όλα τα κληρονομικά πεδία φόρμας σε ένα εύρος |
FormField | Γενικός κόμβος κληρονομικού πεδίου φόρμας: όνομα, τύπος, αποτέλεσμα, κατάσταση ενεργοποίησης |
FormFieldCollection | Συλλογή αντικειμένων FormField; ευρετήριο με βάση το όνομα σελιδοδείκτη, Remove() |
FieldFormText | FORMTEXT κλάση πεδίου |
FieldFormCheckBox | FORMCHECKBOX κλάση πεδίου |
FieldFormDropDown | FORMDROPDOWN κλάση πεδίου |
TextFormFieldType | Απαρίθμηση για τη μορφή εισόδου πεδίου κειμένου (Regular, Number, Date, κ.λπ.) |
DropDownItemCollection | Επεξεργάσιμη λίστα των επιλογών ενός πεδίου πτυσσόμενου μενού |