次の方法で共有


[方法] フォーム データにアクセスする方法

InfoPath フォームの機能を拡張しようと思うと、多くの場合、フォームの基になる XML ドキュメントに関する情報へのアクセス、XML ドキュメントに記述されているデータへのアクセス、XML ドキュメントに対する何らかの操作の実行などの処理をプログラムで行う必要が出てきます。InfoPath オブジェクト モデルでは、XmlForm クラスと XmlFormCollection クラスを関連させて使用することにより、フォームの基になる XML ドキュメントにアクセスしたり、その XML ドキュメントを操作したりすることができます。

XmlForm クラスには、さまざまなプロパティとメソッドが用意されており、フォームの基になる XML ドキュメントを扱えるだけではなく、InfoPath のユーザー インターフェイスで行える多数の操作を実行することもできるため、このクラスは InfoPath オブジェクト モデルの中では最も便利な型の 1 つと言えます。

XmlFormCollection クラスの概要

XmlFormCollection クラスには、次のメソッドとプロパティがあります。フォームの開発者は、これらを使用することにより、コレクションに含まれている XmlForm オブジェクトを管理できます。

名前 説明

New メソッド

指定したフォームに基づいて新しいフォームを作成します。

New メソッド (オーバーロード 1)

指定した開くモードの動作を使用して、指定したフォームに基づいて新しいフォームを作成します。

NewFromFormTemplate メソッド

指定したフォーム テンプレートに基づいて新しいフォームを作成します。

NewFromFormTemplate メソッド (オーバーロード 1)

指定したフォーム テンプレートと XML データに基づいて新しいフォームを作成します。

NewFromFormTemplate メソッド (オーバーロード 2)

指定したフォーム テンプレートと XPathNavigator オブジェクトで指定されるデータに基づいて新しいフォームを作成します。

NewFromFormTemplate メソッド (オーバーロード 3)

指定した開くモードの動作を使用して、指定したフォーム テンプレートと XPathNavigator オブジェクトで指定されるデータに基づいて新しいフォームを作成します。

Open メソッド

指定したフォームを開きます。

Open メソッド (オーバーロード 1)

指定した開くモードの動作を使用して、指定したフォームを開きます。

Count プロパティ

コレクションに含まれている XmlForm オブジェクトの数を取得します。

Item プロパティ

インデックス値で指定されたコレクション内の XmlForm オブジェクトへの参照を取得します。

XmlForm クラスの概要

XmlForm クラスには、次のメソッドとプロパティがあります。フォームの開発者は、これらを使用することにより、フォームの基になる XML ドキュメントと相互作用したり、その XML ドキュメントに対して操作を実行したりできます。

名前 説明

Close メソッド

フォームを閉じます。

GetWorkflowTasks メソッド

現在のフォームの Microsoft.Office.Core.WorkflowTasks コレクションへの参照を取得します。

GetWorkflowTemplates メソッド

現在のフォームの Microsoft.Office.Core.WorkflowTemplates コレクションへの参照を取得します。

MergeForm メソッド

現在のフォームを、パスまたは URL によって指定されたフォームとマージします。

MergeForm メソッド (オーバーロード 1)

現在のフォームを、メソッドに渡された XPathNavigator によって返されるノードに指定されたターゲット フォームにマージします。

NotifyHost メソッド

ホストしているアプリケーションまたは ASPX ページにカスタム値を提供します。

Print メソッド

フォームのアクティブ ビューに表示されているフォームの内容を印刷します。

Print メソッド (オーバーロード 1)

[印刷] ダイアログ ボックスを表示することによって、フォームのアクティブ ビューに表示されているフォームの内容を印刷します。

Save メソッド

現在関連付けられている Uniform Resource Locator (URL) にフォームを保存します。

SaveAs メソッド

指定した Uniform Resource Locator (URL) にフォームを保存します。

SetSaveAsDialogFilename メソッド

[名前を付けて保存] ダイアログ ボックスを使用してフォームを保存するときの既定のファイル名を設定します。

SetSaveAsDialogLocation メソッド

[名前を付けて保存] ダイアログ ボックスを使用してフォームを保存するときの既定のパスを設定します。

Submit メソッド

フォーム テンプレートに定義された送信処理を使用してフォームを送信します。

CurrentView プロパティ

フォームの現在のビューを表す View オブジェクトを取得します。

DataConnections プロパティ

フォームに関連付けられた DataConnectionCollection オブジェクトを取得します。

DataSources プロパティ

フォームに関連付けられた DataSourceCollection オブジェクトを取得します。

Dirty プロパティ

フォームのデータが最後に保存されてから変更されたかどうかを示す値を取得します。

Errors プロパティ

フォームに関連付けられた FormErrorCollection への参照を取得します。

Extension プロパティ

System.Reflection を使用してフォームのプライマリ フォーム コード ファイルに含まれる関数およびグローバル変数にアクセスするための Object を取得します。

FormState プロパティ

サーバー上の複数のセッションにわたって状態情報を維持するためにブラウザ対応のフォームで使用できる、System.Collections.IDictionary 型のプロパティ バッグへの参照を取得します。

Host プロパティ

ホストされた InfoPath のインスタンスで実行しているコードでホスト アプリケーションのオブジェクト モデルにアクセスするために使用できる System.Object を取得します。

Hosted プロパティ

InfoPath が別のアプリケーションでコントロールとしてホストされているかどうかを取得します。

HostName プロパティ

InfoPath をコントロールとしてホストしているアプリケーションの名前を取得します。

MainDataSource プロパティ

フォームのメイン データ ソースを表す DataSource オブジェクトを取得します。

NamespaceManager プロパティ

フォームで使用されている名前空間を解決、追加、または削除するために使用できる XmlNamespaceManager オブジェクトへの参照を取得します。

New プロパティ

フォームが新規かどうかを指定する値を取得します。

Permission プロパティ

フォームに関連付けられている Permission オブジェクトへの参照を取得します。

QueryDataConnection プロパティ

フォームに関連付けられているデータ接続を表す DataConnection オブジェクトへの参照を取得します。

ReadOnly プロパティ

フォーム テンプレートが読み取り専用またはロックされているかどうかを示す値を取得します。

Recovered プロパティ

フォームが最後に保存されたのが自動保存操作によるものかどうかを示す値を取得します。

Signed プロパティ

フォームがデジタル署名を使用してデジタル署名されているかどうかを示す値を取得します。

SignedDataBlocks プロパティ

フォームに関連付けられている SignedDataBlockCollection コレクションへの参照を取得します。

TaskPanes プロパティ

フォーム テンプレートに関連付けられた TaskPaneCollection への参照を取得します。

Template プロパティ

フォームに関連付けられたフォーム テンプレートのマニフェスト (.xsf) を表す FormTemplate オブジェクトへの参照を取得します。

Uri プロパティ

フォームの Uniform Resource Identifier (URI) を取得します。

UserRole プロパティ

フォームのロール名の現在のユーザーを取得または設定します。

ViewInfos プロパティ

フォーム テンプレートに関連付けられた ViewInfoCollection オブジェクトへの参照を取得します。

XmlLang プロパティ

フォームの基になる XML ドキュメント内の xml:lang 属性の値を取得します。

XmlFormCollection クラスを使用する

XmlFormCollection クラスは、Application クラスの XmlForms プロパティを通じてアクセスされます。Microsoft.Office.InfoPath 名前空間のメンバによって提供されるオブジェクト モデルを使用して作成されたマネージ コード フォーム テンプレートでは、フォーム コードで this (C# の場合) キーワードまたは Me (Visual Basic の場合) キーワードを使用して、Application クラスとそのメンバにアクセスできます。

次の例では、Application クラスの XmlForms プロパティを使用して、InfoPath の実行中のインスタンスの XDocumentsCollection オブジェクトを参照する myForms という名前のオブジェクト変数を作成します。この変数を使用して、現在開いているフォームの数を表示します。

// Create variable for accessing the XmlFormCollection.
XmlFormCollection myForms = this.Application.XmlForms;

// Display the number of forms that are currently open.
MessageBox.Show("Forms open: " + myForms.Count);
// Create variable for accessing the XmlFormCollection.
Dim myForms As XmlFormCollection = Me.Application.XmlForms

' Display the number of forms that are currently open.
MessageBox.Show("Forms open: " + myForms.Count)

myForms 変数は、新しいフォームを作成したり (いずれかの New メソッドまたは NewFromTemplate メソッドを使用)、既存のフォームを開いたり (いずれかの Open メソッドを使用) する場合にも使用できます。

XmlForm クラスを使用する

Microsoft.Office.InfoPath 名前空間のメンバによって提供されるオブジェクト モデルを使用して作成されたマネージ コード フォーム テンプレートでは、フォーム コードで this (C# の場合) キーワードまたは Me (Visual Basic の場合) キーワードを使用して、XmlForm クラスのメンバに直接アクセスできます (XmlForm キーワードへの参照なしで)。

フォームのプロパティ値にアクセスする

次の例では、this キーワードまたは Me キーワードを使用して、XmlForm クラスの NewReadOnlySigned、および Uri の各プロパティにアクセスし、現在のフォームについて返された値をメッセージ ボックスに表示します。

MessageBox.Show(
   "Is new: " + this.New + System.Environment.NewLine +
   "Is read-only: " + this.ReadOnly + System.Environment.NewLine +
   "Is signed: " + this.Signed + System.Environment.NewLine +
   "Form URI: " + this.Uri);
MessageBox.Show( _
   "Is new: " & this.New + System.Environment.NewLine & _
   "Is read-only: " & this.ReadOnly & System.Environment.NewLine + _
   "Is signed: " & this.Signed & System.Environment.NewLine & _
   "Form URI: " & this.Uri)

フォームのデータ ソースにアクセスする

フォーム データに関する XmlForm クラスの主要なプロパティは、MainDataSource プロパティです。このプロパティは、現在のフォームの基になる XML データを表す DataSource オブジェクトへの参照を返します (現在のフォームの基になる XML データは、フォームのメイン データ ソースまたはプライマリ データ ソースとも呼ばれます)。DataSource クラスには CreateNavigator メソッドがあります。このメソッドは、フォームの基になる XML ドキュメントのルートに配置される System.Xml.XPath.XPathNavigator オブジェクトを作成します。次に、XPathNavigator クラスのプロパティとメソッドを使用して、フォームの基になる XML データ内を移動し、データを編集できます。

次の例では、XmlForm クラスの MainDataSource プロパティを使用して、フォームのメイン データ ソースのルートに配置される XPathNavigator オブジェクトを作成します。次に、XPathNavigator クラスの OuterXml プロパティを使用して、フォームの基になる XML ドキュメントのすべての内容を取得し、表示します。

// Get outer XML of the underlying XML document.
string myDoc = this.MainDataSource.CreateNavigator.OuterXml.ToString();
// Display XML.
MessageBox.Show(myDoc);
' Get outer XML of the underlying XML document.
Dim myDoc As String myDoc = _
   Me.MainDataSource.CreateNavigator.OuterXml.ToString()
' Display XML.
MessageBox.Show(myDoc)
メモメモ :

InfoPath では、MainDataSource プロパティを、this キーワードまたは Me キーワードを使用して XmlForm オブジェクトにアクセスするときの既定のプロパティとして扱うので、XPathNavigator オブジェクトを作成するためのコード行ではこのプロパティを省略できます。

InfoPath フォーム テンプレートのビジネス ロジックでの XPathNavigator クラスの詳細については、「[方法] XPathNavigator クラスおよび XPathNodeIterator クラスを操作する方法」を参照してください。

フォームのフォーム テンプレート ファイルに関するデータにアクセスする

フォームに関連付けられているフォーム テンプレートに関する情報は、フォーム定義ファイル (.xsf) およびそこに格納されているソース XML データを含め、XmlForm クラスを使用してアクセスすることもできます。この情報は、Template プロパティを使用してアクセスします。このプロパティは、現在のフォームに関連付けられているフォーム テンプレートを表す FormTemplate オブジェクトへの参照を返します。

次の例では、1 つ目のメッセージ ボックスに、Template クラスを使用して取得できるデータの一部を表示します。表示されるデータには、Uniform Resource Identifier (URI) での場所 (Uri プロパティを使用)、キャッシュ識別子 (CacheId プロパティを使用)、そのバージョン番号 (Version プロパティを使用) などがあります。2 つ目のメッセージ ボックスでは、Template クラスの Manifest プロパティを使用して、フォーム定義ファイル (.xsf) のソース XML を表示するために使用される XPathNavigator オブジェクトを作成します。

// Display form template properties.
MessageBox.Show(
   "Cache ID: " + this.Template.CacheId + System.Environment.NewLine +
   "URI: " + this.ReadOnly + System.Environment.NewLine +
   "Version: " + this.Signed, "Form Template Properties");

// Display form definition file XML.
MessageBox.Show(this.Template.Manifest.OuterXml, 
   "Form Definition File XML");
' Display form template properties.
MessageBox.Show( _
   "Cache ID: " & Me.Template.CacheId & System.Environment.NewLine &
   "URI: " & Me.ReadOnly & System.Environment.NewLine &
   "Version: " & Me.Signed, "Form Template Properties")

' Display form definition file XML.
MessageBox.Show(Me.Template.Manifest.OuterXml, _
   "Form Definition File XML")