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.