방법: InfoPath 2003 개체 모델을 사용하여 양식 이벤트에 응답
사용자가 양식에 데이터를 입력할 때 발생할 수 있는 다양한 이벤트에 응답하도록 코드를 작성할 수 있습니다. InfoPath에서 이벤트를 사용하려면 InfoPath 디자이너에서 이벤트 처리기를 만듭니다.
InfoPath 2003 호환 개체 모델을 사용하는 경우 InfoPath에서는 양식의 코드 파일(FormCode.cs 또는 FormCode.vb)에 자동으로 올바른 선언을 추가하고 특성(InfoPathEventHandlerAttribute)을 적용하여 이벤트 처리기를 식별하고 싱크하므로 InfoPath 디자이너에서 InfoPath 이벤트 처리기를 만들어야 합니다. 이벤트 처리기를 만든 후에는 양식의 코드 파일에서 선언과 특성을 변경하면 안 됩니다.
InfoPath 이벤트 처리기를 만드는 방법에 대한 자세한 내용은 방법: InfoPath 2003 개체 모델을 사용하여 이벤트 처리기 추가를 참조하십시오.
이벤트 개체 개요
InfoPath 2003 호환 개체 모델은 Microsoft.Office.Interop.InfoPath.SemiTrust 네임스페이스에 노출되는 9개의 이벤트 개체를 구현합니다. 다음 표에서는 이러한 9개의 InfoPath 이벤트 개체와 각 개체에 연결된 이벤트 처리기를 보여 주고 해당 이벤트 처리기에서 제공하는 기능에 대해 설명합니다.
이름 |
이벤트 처리기 |
설명 |
---|---|---|
XML DOM(문서 개체 모델) 변경 중에 양식의 원본으로 사용하는 XML 문서, 반환 상태 및 XML 노드에 대한 정보가 들어 있는 다른 속성에 대한 참조를 반환하며 오류 발생을 위한 메서드도 포함합니다. |
||
양식 영역에서 단추를 클릭하면 양식의 원본 XML 문서, 반환 상태 및 원본 XML 노드에 대한 참조를 반환합니다. |
||
양식의 원본으로 사용하는 XML 문서의 현재 컨텍스트인 XML DOM(문서 개체 모델) 노드에 대한 정보를 반환합니다. |
||
보기 전환 또는 양식 병합 작업 중에 양식의 원본으로 사용하는 XML 문서에 대한 참조를 반환합니다. |
||
양식 로드 또는 전송 작업 중에 양식의 원본으로 사용하는 XML 문서와 반환 상태에 대한 참조를 반환합니다. |
||
OnMergeRequest 이벤트가 실행되는 동안 양식의 원본 XML 문서와 프로그래밍 방식으로 상호 작용하고 병합할 파일 수와 같은 병합 속성을 결정하는 데 사용할 수 있는 속성과 메서드를 반환합니다. |
||
OnSaveRequest 이벤트 처리기의 저장 작업 중에 양식의 원본 XML 문서와 프로그래밍 방식으로 상호 작용하고 저장 속성을 결정하여 저장 작업을 수행하는 데 사용할 수 있는 많은 속성과 메서드를 반환합니다. |
||
디지털 서명에 데이터를 추가하는 데 사용됩니다. |
||
버전 업그레이드 작업 중에 양식의 원본 XML 문서, 반환 상태 및 문서와 솔루션 버전 번호에 대한 참조를 반환합니다. |
이벤트 개체 사용
이벤트 처리기를 만들 때 InfoPath에서는 프로젝트의 양식 코드 파일(FormCode.cs 또는 FormCode.vb)에 이벤트 처리기의 선언을 만듭니다. 이 이벤트 처리기 선언에서는 이벤트 처리기에 전달되는 매개 변수의 이름으로 e가 사용됩니다. 이 매개 변수에는 이벤트 처리기에 연결된 이벤트 개체가 포함됩니다.
예를 들어 개발자 탭에서 On Load 이벤트를 클릭하여 디자인 모드에서 OnLoad 이벤트의 이벤트 처리기를 만드는 경우 DocReturnEvent 개체를 받는 이벤트 처리기의 선언이 양식 코드 파일에 추가되고 다음과 같은 이벤트 처리기 선언에 코드를 추가할 수 있도록 코드 편집기가 열립니다.
// The following function handler is created by Microsoft Office
// InfoPath. Do not modify the type or number of arguments.
[InfoPathEventHandler(EventType=InfoPathEventType.OnLoad)]
public void FormEvents_OnLoad(DocReturnEvent e)
{
// Write your code here.
}
' The following function handler is created by Microsoft Office
' InfoPath. Do not modify the type or number of arguments.
<InfoPathEventHandler(EventType:=InfoPathEventType.OnLoad)> _
Public Sub FormEvents_OnLoad(ByVal e As DocReturnEvent)
' Write your code here.
End Sub
이벤트 처리기에 대한 코드를 작성하는 경우, e 매개 변수를 통해 전달되는 이벤트 개체에서 구현하는 속성과 메서드를 사용할 수 있습니다. 예를 들어 다음 OnBeforeChange 이벤트 처리기에서는 방금 변경한 필드의 값을 확인하기 위해 DataDOMEvent 이벤트 개체의 NewValue 속성을 사용합니다. 이때 필드가 비어 있으면 DataDOMEvent 이벤트 개체의 ReturnMessage 속성을 사용하여 대화 상자에 오류를 표시하고 ReturnStatus 속성이 false로 설정되어 사용자의 변경 내용이 적용되지 않습니다.
[InfoPathEventHandler(MatchPath="/my:myFields/my:field1",
EventType=InfoPathEventType.OnBeforeChange)]
public void field1_OnBeforeChange(DataDOMEvent e)
{
// Determine whether there is a new value.
if ((string)e.NewValue == "")
{
// The value is blank, so display an error message and roll
// back the changes.
e.ReturnMessage = "You must supply a value for this field.";
e.ReturnStatus = false;
return;
}
}
<InfoPathEventHandler(MatchPath:="/my:myFields/my:field1", _ EventType:=InfoPathEventType.OnBeforeChange)> _
Public Sub field1_OnBeforeChange(ByVal e As DataDOMEvent)
' Determine whether there is a new value.
If (e.NewValue = "") Then
' The value is blank, so display an error message and roll back
' the changes.
e.ReturnMessage = "You must supply a value for this field."
e.ReturnStatus = False
Return
End If
End Sub
참고 사항 |
---|
InfoPath 2003 호환 개체 모델의 각 InfoPath 이벤트 개체는 다양한 속성과 메서드를 구현합니다. 특정 이벤트 개체에 대한 자세한 내용을 보려면 앞에 나온 이벤트 개체 표에서 해당 개체를 클릭하십시오. |