レガシーフォーム フィールド

レガシーフォーム フィールド

レガシーフォーム フィールド

Aspose.Words FOSS for .NET は、Word のレガシー(コンテンツコントロール以前)フォームフィールド(テキスト入力、チェックボックス、ドロップダウンフィールド)を、Aspose.Words.Fields の FormField クラスとその 3 つの専門サブクラスを通じて読み取り・操作します。


フォームフィールド値の読み取り

Document.Range.FormFields(FormFieldCollection)は、ノードツリーを手動でたどることなく、範囲内のすべてのレガシーフォームフィールドへ直接アクセスできます。各FormFieldは、Name(フィールドを参照するために使用されるブックマーク形式の識別子)、Type(どの種類のフォームフィールドかを識別するFieldType値)、Result(現在の値)、Enabled、およびHelpText/OwnHelp と StatusText/OwnStatus を通じたヘルプ/ステータステキストを公開します。SetTextInputValue(newValue) はテキスト入力フィールドの新しい値を直接設定します。FormFieldCollection をブックマーク名(例:formFields["BookmarkName"])でインデックス付けして特定のフィールドを取得し、Remove(formField) / RemoveAt(index) でコレクションからフィールドを削除します。


テキスト、チェックボックス、ドロップダウンフィールドの種類

3 つのレガシーフォームフィールドタイプはそれぞれ専用のクラスを持ちます: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 マクロ名を参照します — それらを読み取ってもマクロコードは実行されません。
  • テキストフィールドの Result を数値や日付として解析する前に、TextInputType を確認してください — Regular フィールドにはフォーマット制約がありません。

一般的な問題

問題原因修正
ブックマーク名で FormFieldCollection をインデックス付けすると null が返されますフォームフィールドのブックマーク名が一致しないか、検索範囲にフィールドが存在しません列挙中に FormField.Name を使用して正確なブックマーク名を確認してください
Checked を設定した後にチェックボックスの状態が反映されません変更後にドキュメントが保存されません変更後にドキュメントを保存してください; Checked は次回アクセス時に読み取られます
ドロップダウン DropDownSelectedIndex が範囲外ですインデックスが DropDownItems の項目に対応していません設定する前にインデックスを DropDownItems.Count と照合してください
テキストフィールドの値が適用されていませんSetTextInputValue の代わりに直接プロパティ代入を使用しましたFormField に対して SetTextInputValue(newValue) を呼び出してください

FAQ

FormField と FieldFormText/FieldFormCheckBox/FieldFormDropDown の違いは何ですか?

FormField は任意のレガシーフォームフィールドを表す汎用ノードで、Document.Range.FormFields を通じてアクセスします。FieldFormText、FieldFormCheckBox、および FieldFormDropDown は、一般的な Field コレクションを介して操作する際に、各フィールドタイプに対応するフィールド固有のクラス(Field から派生)です。

ドキュメント内のすべてのフォームフィールドの値を取得するにはどうすればよいですか?

Document.Range.FormFields を列挙し、各 FormField の Name/Result を読み取ります。

ドロップダウンフォームフィールドにオプションを追加できますか?

はい — FormField.DropDownItems は Add(value)、Insert(index, value)、Remove(name) を備えた DropDownItemCollection です。

これらは最新のコンテンツコントロールと同じですか?

いいえ。レガシーフォームフィールド(FORMTEXT、FORMCHECKBOX、FORMDROPDOWN)は Word の構造化ドキュメントタグ(コンテンツコントロール)モデルよりも前に作られました; 両方が同じドキュメントに存在できます。


API Reference の概要

クラス / メソッド説明
Document.Range.FormFields範囲内のすべてのレガシーフォームフィールドへの直接アクセス
FormField汎用レガシーフォームフィールドノード: name、type、result、enabled state
FormFieldCollectionFormField オブジェクトのコレクション; ブックマーク名でインデクサ、Remove()
FieldFormTextFORMTEXT フィールドクラス
FieldFormCheckBoxFORMCHECKBOX フィールドクラス
FieldFormDropDownFORMDROPDOWN フィールドクラス
TextFormFieldTypeテキストフィールド入力形式の列挙型 (Regular, Number, Date など)
DropDownItemCollectionドロップダウンフィールドのオプションの編集可能なリスト

参照

 日本語