InfoPath 2003 オブジェクト モデルを使用してフォーム ウィンドウを操作する

InfoPath フォームをプログラムから操作するときは、フォームのウィンドウにアクセスするコードを記述し、ウィンドウに含まれるアイテムの一部をカスタマイズすることができます。 InfoPath 2003 互換のオブジェクト モデルでは、WindowsCollection インターフェイスと WindowObject インターフェイスを関連させて使用することにより、フォームのウィンドウにアクセスできます。

InfoPath には、次の 2 種類のウィンドウがあります。

  • ユーザーがフォームにデータを入力するときに使用する編集ウィンドウ。

  • ユーザーがフォーム テンプレートをデザインするときに使用するデザイン ウィンドウ。

フォーム テンプレートのコードを書くときに便利な機能を備えているのは編集ウィンドウです。参照する WindowObject インスタンスを使用して、さまざまなプロパティとメソッドにアクセスし、フォーム編集の操作性をカスタマイズすることができます。

WindowsCollection インターフェイスの概要

WindowsCollection インターフェイスには、次のプロパティがあります。フォーム テンプレートの開発者は、これらのプロパティを使用して、フォーム テンプレートに含まれている WindowObject インスタンスを管理できます。

名前 説明
Count プロパティ
コレクションに含まれている Window オブジェクトの数を返します。
Item プロパティ
指定された Window オブジェクトの参照を返します。 : Visual C# では、Item プロパティを呼び出す代わりに、インデクサーを使用してコレクションにアクセスします。 たとえば、「 thisApplication.Windows[0].Caption 」のように入力します。

Window オブジェクトの概要

WindowObject インターフェイスには、次のメソッドとプロパティがあります。フォームの開発者は、これらを使用して、InfoPath のウィンドウを操作できます。 これらのメソッドとプロパティのサポートは、操作対象のウィンドウの種類 (XdWindowType) によって異なります。 メソッドとプロパティの中には、ウィンドウの種類がエディター (XdWindowType.xdEditorWindow) でないと機能しないものがあります。 その他のメソッドとプロパティは、ウィンドウの種類がエディターでも、デザイナー (XdWindowType.xdDesignerWindow) でも機能します。 さらに、InfoPath オブジェクト モデルのすべてのメンバーと同様に、フォーム テンプレートから呼び出す際のメソッドとプロパティのサポートは、セキュリティ レベルおよびフォームのデプロイ方法によって異なります。

名前 説明 ウィンドウの種類のサポート
Activate メソッド
現在アクティブなウィンドウを指定します。 xdDesignWindow および xdEditorWindow
Active プロパティ
ウィンドウが現在アクティブなウィンドウかどうかを示す Boolean 値を返します。 xdDesignWindow および xdEditorWindow
Caption プロパティ
Window オブジェクトによって表されるウィンドウのキャプション テキストを返す、または設定する読み取り/書き込みプロパティ。 xdEditorWindow のみ
Close メソッド
ウィンドウを閉じます。 xdEditorWindow のみ
CommandBars プロパティ
Microsoft Office CommandBars オブジェクトへの参照を返します。 xdDesignWindow および xdEditorWindow
Height プロパティ
Window オブジェクトによって表されるウィンドウのポイント単位での高さを指定する Long 型整数の読み取り/書き込みプロパティ。 xdDesignWindow および xdEditorWindow
Left プロパティ
Window オブジェクトによって表されるウィンドウのポイント単位での水平方向の位置を指定する Long 型整数の読み取り/書き込みプロパティ。 xdDesignWindow および xdEditorWindow
MailEnvelope プロパティ
MailEnvelopeObject オブジェクトへの参照を返します。 xdEditorWindow のみ
TaskPanes プロパティ
TaskPanesCollection コレクションへの参照を返します。 xdDesignWindow および xdEditorWindow
Top プロパティ
Window オブジェクトによって表されるウィンドウのポイント単位での垂直方向の位置を指定する Long 型整数の読み取り/書き込みプロパティ。 xdDesignWindow および xdEditorWindow
WindowType プロパティ
XdWindowType 列挙に基づいて、ウィンドウの種類を表す数値を返します。 xdDesignWindow および xdEditorWindow
Width プロパティ
Window オブジェクトによって表されるウィンドウのポイント単位での幅を指定する Long 型整数の読み取り/書き込みプロパティ。 xdDesignWindow および xdEditorWindow
WindowState プロパティ
Window オブジェクトによって表されるウィンドウの状態を返す、または設定する XdWindowState 型の読み取り/書き込みプロパティ。 xdDesignWindow および xdEditorWindow
XDocument プロパティ
ウィンドウに関連付けられている _XDocument オブジェクトへの参照を返します。 xdEditorWindow のみ

WindowsCollection インターフェイスおよび Window インターフェイスを使用する

WindowsCollection インターフェイスには、 Application インターフェイスの Windows プロパティを通じてアクセスできます。 WindowsCollection インターフェイスを使用してフォームのウィンドウにアクセスするときは、インデクサーを使用するか (Visual C# の場合)、 Item プロパティに Long 型整数を渡して (Visual Basic の場合)、 WindowObject インターフェイス インスタンスへの参照を返します。 たとえば、次のコードは、 WindowsCollection に含まれる最初の WindowObject への参照を設定します。

WindowObject objWindow = thisApplication.Windows[0];
Dim objWindow As WindowObject = thisApplication.Windows(0)

ただし、次のコードに示すように、WindowsCollection を使用せずに、アプリケーション インターフェイスの ActiveWindow プロパティを使用して、現在開いているウィンドウに直接アクセスできます。

WindowObject objWindow = thisApplication.ActiveWindow;
Dim objWindow As WindowObject = thisApplication.ActiveWindow

注:

InfoPath マネージ コード プロジェクトをデバッグするときは、デバッグ ウィンドウがアクティブなので、 ActiveWindow プロパティは常に null を返します。

WindowObject には、フォームの基になる XML ドキュメントに関連付けられている View インターフェイスの Window プロパティを使用してアクセスすることもできます。 XDocument インターフェイスの View プロパティは、View オブジェクトにアクセスするために使用されます。 たとえば、次のコードは、フォームの基になる XML ドキュメントのビューに関連付けられている WindowObject への参照を設定します。

WindowObject objWindow = thisXDocument.View.Window;
Dim objWindow As WindowObject = thisXDocument.View.Window

注:

Window オブジェクトのプロパティとメソッドの一部は、編集ウィンドウの種類専用です。デザイン ウィンドウの種類と共に使用すると、エラーが返されます。 各ウィンドウの種類でサポートされているプロパティとメソッドを、このトピックで前に示した表に示します。 コードで WindowType プロパティを使用して、操作しているウィンドウの種類を決定できます。