Поделиться через


Практическое руководство. Написание условной логики, определяющей среду выполнения

Свойство Environment класса Application возвращает ссылку на объект Environment, который можно использовать для определения, в какой среде выполнения (InfoPath, веб-обозреватель или обозреватель мобильного устройства) открыта форма.

Пример

Определение среды выполнения, в которой запускается форма

Класс Environment предоставляет свойства IsBrowser и IsMobile, позволяющие определить, какая среда редактирования была использована для открытия шаблона формы. Если оба свойства возвращают значение false, то шаблон формы был открыт в Microsoft Office InfoPath 2007. Если одно из свойств возвращает true, то шаблон формы был открыт из Microsoft Office Forms Server 2007 или из соответствующим образом настроенной библиотеки документов в Microsoft Office SharePoint Server 2007, где выполняется Служба InfoPath Forms Services, в программе для соответствующего свойства: в веб-обозревателе (свойство IsBrowser) или в обозревателе мобильного устройства (свойство IsMobile).

Если в следующем примере форма открывается в веб-обозревателе или в обозревателе мобильного устройства, то для значения field1 (связанное с элементом управления Текстовое поле) устанавливается строка, указывающая среду выполнения, в которой выполнялось открытие формы. Если форма открывается в InfoPath, то для отображения окна сообщения используется метод System.Windows.Forms.MessageBox.Show (который недоступен при запуске формы в веб-обозревателе).

ЗаметкаВнимание!

При создании шаблона формы для следующего примера кода установите флажок Включить только возможности, совместимые с веб-обозревателем в диалоговом окне Создание шаблона формы. (В качестве альтернативы можно установить флажок Макет шаблона формы, который можно открыть в веб-обозревателе или в InfoPath в категории Совместимость диалогового окна Параметры формы.) Для поддержки класса MessageBox добавьте ссылку на класс System.Windows.Forms на вкладке .NET диалогового окна Добавить ссылку в Набор средств Microsoft Visual Studio для приложений (VSTA) или в Visual Studio, а затем добавьте директиву using или Imports для класса System.Windows.Forms в разделе объявлений модуля кода формы.

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