次の方法で共有


実行時の環境を指定する条件付きロジックを書く方法

適用対象: InfoPath 2010 | InfoPath Forms Services | Office 2010 | SharePoint Server 2010 | Visual Studio | Visual Studio Tools for Microsoft Office

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

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

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

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

重要

以下のコード例のフォーム テンプレートを作成するときは、Backstage ビューの [新規作成] タブで [空白] テンプレートを選択します (または、[フォームのオプション] ダイアログ ボックスの [互換性] カテゴリにある、[フォームの種類] ドロップダウン リストの [Web ブラウザー フォーム] を選択します)。MessageBox クラスをサポートするには、Microsoft Visual Studio Tools for Applications の [参照の追加] ダイアログ ボックスの [.NET] タブで、System.Windows.Forms への参照を追加します。次に、フォーム コード モジュールの宣言セクションで、System.Windows.Forms の using または 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