فیلدهای فرم قدیمی

فیلدهای فرم قدیمی

Aspose.Words منبع باز برای .NET فیلدهای فرم قدیمی (پیش از کنترل محتوا) ورد را می‌خواند و دستکاری می‌کند — فیلدهای ورودی متن، چک‌باکس و کشویی — از طریق کلاس 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.Fields بر اساس نوع، از Document.Range.FormFields استفاده کنید — این نقطه ورودی مستقیم و تایپ‌شده برای فیلدهای فرم قدیمی است.
  • زمانی که مقدار یک فیلد فرم باید محاسبه مجدد فیلدهای وابسته را به محض خروج کاربر از آن فعال کند، CalculateOnExit را تنظیم کنید.
  • FormField.EntryMacro / ExitMacro به نام‌های ماکرو VBA که در سند اصلی پیکربندی شده‌اند اشاره دارند — خواندن آن‌ها هیچ کد ماکرویی را اجرا نمی‌کند.
  • قبل از تجزیه Result یک فیلد متنی به عنوان عدد یا تاریخ، TextInputType را بررسی کنید — فیلدهای 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) پیش از مدل برچسب سند ساختاری ورد (کنترل محتوا) وجود داشتند؛ هر دو می‌توانند در یک سند ظاهر شوند.


API Reference خلاصه

کلاس / متدتوضیح
Document.Range.FormFieldsدسترسی مستقیم به تمام فیلدهای فرم‌های قدیمی در یک بازه
FormFieldگرهٔ عمومی فرم قدیمی: نام، نوع، نتیجه، وضعیت فعال
FormFieldCollectionمجموعه‌ای از اشیای FormField؛ ایندِکس‌کننده بر اساس نام نشانک، Remove()
FieldFormTextکلاس فیلد FORMTEXT
FieldFormCheckBoxکلاس فیلد FORMCHECKBOX
FieldFormDropDownکلاس فیلد FORMDROPDOWN
TextFormFieldTypeEnum برای قالب ورودی فیلد متن (Regular, Number, Date, و غیره.)
DropDownItemCollectionلیست قابل ویرایش گزینه‌های فیلد کشویی

همچنین ببینید:

 فارسی