שדות טופס ישנים
שדות טופס מדורגים
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 | רשימה ניתנת לעריכה של אפשרויות של שדה נפתח |