XmlEvent.Changing 이벤트
양식의 원본으로 사용하는 XML 문서의 변경 내용이 발생한 후와 해당 변경 내용이 적용되기 전 사이에 발생합니다.
네임스페이스: Microsoft.Office.InfoPath
어셈블리: Microsoft.Office.InfoPath(Microsoft.Office.InfoPath.dll)
구문
‘선언
Public MustOverride Event Changing As XmlChangingEventHandler
‘사용 방법
Dim instance As XmlEvent
Dim handler As XmlChangingEventHandler
AddHandler instance.Changing, handler
public abstract event XmlChangingEventHandler Changing
예외
예외 | 조건 |
---|---|
InvalidOperationException | 개발자가 InternalStartup 메서드가 아닌 다른 위치의 이벤트를 바인딩하려고 했습니다. |
InvalidOperationException | 개발자가 보조 데이터 원본에 있는 노드에 이벤트를 바인딩하려고 했습니다. 이 이벤트는 보조 데이터 원본에서 지원되지 않습니다. |
주의
중요
Changing 이벤트는 양식 코드에서 개발자가 인스턴스화하지 않습니다. 디자인 모드 사용자 인터페이스에서 양식 서식 파일에 이벤트 처리기를 추가하면 Microsoft InfoPath 2010에서 EventManager 클래스와 XmlEvent 클래스의 멤버로 양식 코드 파일의 InternalStartup 메서드에서 코드를 생성하여 문서 수준 이벤트를 해당 이벤트 처리기에 바인딩합니다. InfoPath 디자인 모드에서 이벤트 처리기를 추가하는 방법에 대한 자세한 내용을 보려면 방법: 이벤트 처리기 추가를 참조하십시오.
Changing 이벤트는 XmlChangingEventHandler 대리자를 사용하여 바인딩됩니다.
이 이벤트 처리기를 사용할 때는 작업을 취소할 수 있습니다.
Changing 이벤트가 실행되는 동안에는 양식의 원본으로 사용하는 XML 문서 모드가 읽기 전용이 됩니다. XmlChangingEventArgs.CancelableArgs.Cancel 속성을 true로 설정하면 InfoPath에서는 변경 내용을 거부하고 메시지 상자를 사용자에게 표시합니다. Changing 이벤트에 대한 코드에서 오류가 발생하면 변경 내용이 거부되고 데이터는 이전 상태로 복원됩니다.
참고 사항 |
---|
Changing 이벤트가 실행되는 동안에는 보기를 전환하지 않는 것이 좋습니다. 변경 내용이 아직 적용되지 않아서 다른 보기로 전환할 경우 오류가 발생할 수 있습니다. |
이 형식 또는 멤버는 Microsoft InfoPath Filer에서 연 양식에서 실행되는 코드에서만 액세스할 수 있습니다.
예
다음 예제에서는 field2를 변경할 때 Changing 이벤트가 발생하고 field1과 관련된 FormError 개체가 FormErrorCollection 클래스의 Add 메서드를 사용하여 양식의 FormErrorCollection에 추가됩니다.
이렇게 하면 오류 메시지가 field6과 연결됩니다. Add 메서드의 message 매개 변수로 전달된 문자열은 사용자가 마우스로 field1을 가리키면 스크린 팁에 표시됩니다. 사용자가 field1을 마우스 오른쪽 단추로 클릭한 다음 전체 오류 설명을 클릭하면 InfoPath가 Add 메서드의 messageDetails 매개 변수로 전달된 문자열을 포함하여 전체 오류 메시지를 표시합니다.
public void field2_Changing(object sender, XmlChangingEventArgs e)
{
XPathNavigator errNode =
this.CreateNavigator().SelectSingleNode("/my:myFields/my:field1",
NamespaceManager);
this.Errors.Add(errNode, "Field2Changing",
"The Changing event occurred for Field2.",
"Changes were made to Field2, but have not yet been accepted.");
}
Public Sub field2_Changing(ByVal sender As Object, _
ByVal e As XmlChangingEventArgs)
Dim errNode As XPathNavigator = Me.CreateNavigator(). _
SelectSingleNode("/my:myFields/my:field1", NamespaceManager)
Me.Errors.Add(errNode, "Field2Changing", _
"The Changing event occurred for Field2.", _
"Changes were made, but have not yet been accepted.")
End Sub