FormEvents.Merge 이벤트

사용자 인터페이스에서 양식 병합 명령을 호출하는 경우 또는 /aggregate 명령줄 스위치를 사용하여 InfoPath를 시작하는 경우에 발생합니다.

네임스페이스:  Microsoft.Office.InfoPath
어셈블리:  Microsoft.Office.InfoPath(Microsoft.Office.InfoPath.dll)

구문

‘선언
Public MustOverride Event Merge As MergeEventHandler
‘사용 방법
Dim instance As FormEvents
Dim handler As MergeEventHandler

AddHandler instance.Merge, handler
public abstract event MergeEventHandler Merge

예외

예외 조건
InvalidOperationException

개발자가 InternalStartup 메서드가 아닌 다른 위치의 이벤트를 바인딩하려고 했습니다.

주의

중요

Merge 이벤트는 양식 코드에서 개발자가 인스턴스화하지 않습니다. Microsoft InfoPath 2010 디자인 모드 사용자 인터페이스에서 양식 수준 이벤트에 대해서만 이벤트 처리기를 추가해야 합니다. 디자인 모드 사용자 인터페이스에서 양식 서식 파일에 이벤트 처리기를 추가하면 InfoPath에서 EventManager 클래스와 FormEvents 클래스의 멤버로 양식 코드 파일의 InternalStartup 메서드에서 코드를 생성하여 이벤트를 해당 이벤트 처리기에 바인딩합니다. InfoPath 디자인 모드에서 이벤트 처리기를 추가하는 방법에 대한 자세한 내용은 방법: 이벤트 처리기 추가를 참조하십시오.

Merge 이벤트는 MergeEventHandler 대리자를 사용하여 바인딩됩니다.

Merge 이벤트는 MergeEventArgs 클래스의 CancelableArgs 속성을 사용하여 취소할 수 있습니다. Cancel 속성을 true로 설정하면 됩니다.

이벤트를 취소하면 InfoPath의 작동 방식은 다음 표에 나와 있는 것처럼 MessageMessageDetails 속성을 설정했는지와 어떻게 설정했는지에 따라 달라집니다.

Message 및 MessageDetails
설정

표시되는 대화 상자 및 텍스트

메시지 문자열에 Message 속성만 설정합니다.

, 모두 예취소 단추와 함께 사용자 메시지 및 "계속하시겠습니까?" 메시지

메시지 문자열에 MessageDetails 속성만 설정합니다.

, 모두 예취소 단추와 함께 "formname.xml 양식을 병합하는 중에 오류가 발생했습니다." 및 자세한 사용자 메시지

메시지 문자열에 Message 및 MessageDetails 속성을 둘 다 설정합니다.

, 모두 예취소 단추와 함께 사용자 메시지 및 자세한 메시지

Message 및 MessageDetails 속성을 설정하지 않거나 둘 다 Null 참조(Visual Basic의Nothing ) 또는 빈 문자열로 설정합니다.

대화 상자가 표시되지 않습니다.

사용자가 , 모두 예취소 단추를 클릭할 때의 동작은 다음과 같습니다.

클릭한 단추

병합 동작

단추

병합 작업이 발생하고 병합되는 각각의 개별 양식에 대해 사용자는 를 클릭해야 합니다.

모두 예 단추

병합 작업이 발생하고 선택한 모든 양식이 병합됩니다.

취소 단추

모든 양식의 병합 작업이 취소됩니다. 사용자가 취소를 클릭하기 전에 임의의 양식에 대해 를 클릭한 경우 해당 양식의 병합도 취소됩니다.

MergeEventArgs 개체는 양식의 Merge 이벤트에 대한 이벤트 처리기에 매개 변수로 전달됩니다. MergeEventArgs 개체는 Merge 이벤트가 실행되는 동안 양식의 원본으로 사용하는 XML 문서와 프로그래밍 방식으로 상호 작용하고 병합되는 파일의 개수와 같은 병합 속성을 확인하는 데 사용되는 속성을 제공합니다. MergeEventArgs 개체가 제공하는 속성은 이 이벤트가 실행되는 동안에만 사용할 수 있습니다.

단일 병합 양식 작업 중 병합되는 각 파일에 대해 Merge 이벤트가 한 번 발생하며 해당 이벤트 처리기의 코드가 실행됩니다.

중요

InfoPath 2003 개체 모델에는 병합 작업이 완료된 후에 발생하는 OnAfterImport 이벤트가 있습니다. Microsoft InfoPath 2010 개체 모델에서는 이와 동등한 이벤트를 제공하지 않습니다. 그러나 "병합 후" 작업을 수행하기 전에 Merge 이벤트에 대한 이벤트 처리기에서 MergeEventArgs 클래스의 IndexCount 속성 값을 비교하여 병합 작업이 완료되었는지 확인하면 동일한 기능을 얻을 수 있습니다.

이 형식 또는 멤버는 Microsoft InfoPath Filer에서 연 양식에서 실행되는 코드에서만 액세스할 수 있습니다.

다음 예제에서는 Merge 이벤트에 대한 이벤트 처리기가 변수를 설정하여 병합 작업의 상태를 나타내며 XmlForm 클래스의 MergeForm(XPathNavigator) 메서드를 호출하여 병합 작업을 수행하고 병합이 완료되면 메시지를 표시합니다.

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

참고 항목

참조

FormEvents 클래스

FormEvents 멤버

Microsoft.Office.InfoPath 네임스페이스