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


FormEvents.Merge Событие

Определение

Создается, когда команда Объединить формы выполняется из пользовательского интерфейса или приложение InfoPath запущено с помощью ключа командной строки /aggregate.

public:
 abstract event Microsoft::Office::InfoPath::MergeEventHandler ^ Merge;
public abstract event Microsoft.Office.InfoPath.MergeEventHandler Merge;
member this.Merge : Microsoft.Office.InfoPath.MergeEventHandler 
Public MustOverride Custom Event Merge As MergeEventHandler 

Тип события

Исключения

Попытка разработчика привязать событие в другом местоположении, чем метод InternalStartup.

Примеры

В следующем примере обработчик событий для события Merge задает переменные для указания состояния операции слияния, вызывает MergeForm(XPathNavigator) метод XmlForm класса для выполнения операции слияния и отображает сообщение после завершения слияния.

private bool _merging = false;
public void FormEvents_Merge(object sender, MergeEventArgs e)
{
   // Set global property to indicate that forms are being merged.
   if (e.Index == 0)
   {
      _merging = true;
   }
   // Merge the current form.
   MergeForm(e.Xml);
   e.CancelableArgs.Cancel = false;

   // Check to see if merging is finished.
   if ((e.Index + 1) == e.Count)
   {
      _merging = false;
      MessageBox.Show("Your request to merge " + e.Count + 
         " files is now complete.");
      // Perform any "after merge" operations here.
   }
}
Private _merging As Boolean = False
Public Sub FormEvents_Merge(ByVal sender As Object, _
   ByVal e As MergeEventArgs)
   ' Set global property to indicate that forms are being merged.
   If (e.Index = 0) Then
      _merging = True
   End If

   ' Merge the current form.
   MergeForm(e.Xml)
   e.CancelableArgs.Cancel = False

   ' Check to see if merging is finished.
   If ((e.Index + 1) = e.Count) Then
      _merging = False
      MessageBox.Show("Your request to merge " + e.Count + 
         " files is now complete.")
      ' Perform any "after merge" operations here.
   End If
End Sub

Комментарии

Важно! Событие Merge не предназначено для создания экземпляра разработчиком в коде формы. Следует добавлять обработчики событий только для событий уровня формы из пользовательского интерфейса режима разработки Microsoft InfoPath. При добавлении обработчика событий в шаблон формы из пользовательского интерфейса режима конструктора InfoPath создает код в методе InternalStartup файла кода формы с помощью EventManager класса и члена класса для привязки FormEvents события к его обработчику событий. Сведения о порядке добавления обработчиков событий в режиме конструктора InfoPath см. в разделе How to: Add an Event Handler.

Событие Merge связывается с помощью делегата MergeEventHandler .

Событие Merge можно отменить с помощью CancelableArgs свойства MergeEventArgs класса , чтобы задать для свойства Cancelзначение true.

Если отменить событие, то, как работает InfoPath, зависит от того, заданы Message ли свойства и , MessageDetails как описано в следующей таблице.

Установите только свойство Message в строке сообщенияВаше сообщение и "Продолжить?" с кнопками "Да", "Да ко всем" и "Отмена".
Установите только свойство MessageDetails в строке сообщения"Microsoft Office InfoPath столкнулся с проблемой при слиянии следующей формы: formname.xml". и подробное сообщение с кнопками "Да", "Да ко всем" и "Отмена".
Установите оба свойства Message и MessageDetails в строке сообщения.Сообщение и подробные сведения с кнопками Да, Да для всех и Отмена.
Не устанавливайте свойства Message и MessageDetails или не устанавливайте для них пустую ссылку (Nothing в Visual Basic) или пустую строку.Нет диалогового окна для отображения.

Поведение при нажатии кнопок Да, Да для всех и Отмена следующее:

Кнопка ДаВыполняется операция объединения, и пользователь должен нажать кнопку Да для каждой объединяемой формы.
Кнопка Да для всехВыполняется операция объединения, объединяются все выбранные формы.
Кнопка ОтменаОбъединение всех форм отменено. Если до нажатия кнопки Отмена для некоторых форм была нажата кнопка Да, объединение этих форм также отменяется.

Объект MergeEventArgs передается в качестве параметра обработчику событий для события Merge формы. Объект MergeEventArgs предоставляет свойства, которые можно использовать во время события Merge для программного взаимодействия со связанным XML-документом формы и определения свойств объединения, таких как число объединяемых полей. Свойства, предоставляемые объектом MergeEventArgs, доступны только во время этого события.

Во время одной операции объединения форм событие Merge создается (и выполняется код в его обработчике события) один раз для каждого объединяемого файла.

Важно! В объектной модели InfoPath 2003 возникает OnAfterImport событие, которое происходит после завершения операции слияния. Объектная модель Microsoft InfoPath не предоставляет эквивалентное событие. Однако те же функции можно реализовать в обработчике событий для события Merge путем сравнения значений Index свойств MergeEventArgs и Count класса , чтобы убедиться, что операция слияния завершена, перед выполнением каких-либо операций "после слияния".

Доступ к этому типу или элементу предоставляется только из кода, выполняющегося в формах, открытых в Microsoft InfoPath Filler.

Применяется к