実行時環境を決定する条件付きロジックを書く

Application クラスの Environment プロパティは、 Environment オブジェクトへの参照を取得します。これを使用すると、どの実行時の環境 (InfoPath、Web ブラウザー、またはモバイル ブラウザー) を使ってフォームが開かれたかを判断することができます。

フォームが実行されている実行時の環境を判断する

Environment クラスには、フォーム テンプレートを開くために使用された編集環境を決定できる IsBrowser プロパティと IsMobile プロパティが用意されています。 両方のプロパティが false を返す場合、フォーム テンプレートは Microsoft InfoPath エディターで開かれました。 いずれかのプロパティが true を返す場合、フォーム テンプレートは、対応するプロパティ (Web ブラウザー (IsBrowser プロパティ) またはモバイル ブラウザー (IsMobile プロパティ) のプログラムでInfoPath Forms Servicesを実行している Microsoft SharePoint Server 2010 の適切に構成されたドキュメント ライブラリから開かれました。

次の例では、フォームがブラウザーまたはモバイル ブラウザーで開かれた場合は、field1 ([ テキスト ボックス] コントロールにバインドされている) の値が、フォームが開かれた実行時の環境を示す文字列に設定されます。 フォームが InfoPath で開かれた場合は、 System.Windows.Forms.MessageBox.Show メソッド (このメソッドは、フォームがブラウザーで実行されているときは使用できません) を使用してメッセージ ボックスが表示されます。

重要

次のコード サンプルのフォーム テンプレートを作成する場合は、Backstage ビューの [新規] タブで [空のテンプレート] を選択します。 (または、[フォーム オプション] ダイアログ ボックスの [互換性] カテゴリの [フォームの種類] ドロップダウン リストから [Web ブラウザーフォーム] を選択することもできます)。MessageBox クラスをサポートするには、 の System.Windows.Forms への参照を追加します。 Visual Studio 2012 の [参照の追加] ダイアログ ボックスの [NET] タブをクリックし、フォーム コード モジュールの宣言セクションに System.Windows.Formsusing ディレクティブまたは Imports ディレクティブを追加します。

if(this.Application.Environment.IsBrowser)
{
   CreateNavigator().SelectSingleNode(
      "/my:myFields/my:field1", NamespaceManager).
      SetValue("Running in a browser.");
}
else if (this.Application.Environment.IsMobile)
{
   CreateNavigator().SelectSingleNode(
      "/my:myFields/my:field1", NamespaceManager).
      SetValue("Running in a mobile browser.");
}
else
{
   MessageBox.Show("This form is running in the InfoPath editor.");
}
If (Me.Application.Environment.IsBrowser) Then
   CreateNavigator().SelectSingleNode(_
      "/my:myFields/my:field1", NamespaceManager). _
      SetValue("Running in a browser.")
ElseIf (Me.Application.Environment.IsMobile) Then
   CreateNavigator().SelectSingleNode( _
      "/my:myFields/my:field1", NamespaceManager). _
      SetValue("Running in a mobile browser.")
Else
   MessageBox.Show("This form is running in the InfoPath editor.")
End If