次の方法で共有


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

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

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

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

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

メモ重要 :

以下のコード例のフォーム テンプレートを作成するときは、[フォーム テンプレートのデザイン] ダイアログ ボックスで [ブラウザ互換の機能のみを有効にする] チェック ボックスをオンにします (または、[フォームのオプション] ダイアログ ボックスの [互換性] カテゴリの下で、[ブラウザまたは InfoPath で開くことができるフォーム テンプレートをデザインする] チェック ボックスをオンにします)。MessageBox クラスをサポートするには、Microsoft Visual Studio Tools for Applications (VSTA) または Visual Studio の [参照の追加] ダイアログ ボックスの [.NET] タブで、System.Windows.Forms への参照を追加します。次に、フォーム コード モジュールの宣言セクションで、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 InfoPath.");
}
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 InfoPath.")
End If