다음을 통해 공유


_DataDOMEventSink_Event.OnBeforeChange 이벤트

양식의 원본으로 사용하는 XML 문서를 변경한 후 해당 내용을 적용하기 전에 발생합니다.

네임스페이스: Microsoft.Office.Interop.InfoPath.SemiTrust
어셈블리: Microsoft.Office.Interop.InfoPath.SemiTrust(microsoft.office.interop.infopath.semitrust.dll)

구문

Event OnBeforeChange As _DataDOMEventSink_OnBeforeChangeEventHandler

Dim instance As _DataDOMEventSink_Event
Dim handler As _DataDOMEventSink_OnBeforeChangeEventHandler

AddHandler instance.OnBeforeChange, handler
event _DataDOMEventSink_OnBeforeChangeEventHandler OnBeforeChange

주의

이 이벤트 처리기를 사용할 때는 DataDOM 작업을 취소할 수 있습니다.

OnBeforeChange 이벤트 중에는 양식의 원본으로 사용하는 XML 문서가 읽기 전용 모드가 됩니다. DataDOMEventObject 개체의 ReturnStatus 속성이 false로 설정되어 있으면 Microsoft Office InfoPath 2007 에서 변경 내용을 거부하고 사용자에게 메시지 상자가 표시됩니다. OnBeforeChange 이벤트의 코드에서 오류가 발생하면 InfoPath에서 변경 내용을 거부하고 데이터는 이전 상태로 복원됩니다.

참고:

OnBeforeChange 이벤트 중에는 보기를 전환하지 않는 것이 좋습니다. 변경 내용이 적용되지 않은 상태에서 다른 보기로 전환하면 오류가 발생할 수 있습니다.

참고:

양식의 원본으로 사용하는 XML 문서의 변경과 관련된 이벤트가 두 번 이상 발생하는 경우가 있습니다. 예를 들어 기존 데이터가 변경될 때 삽입 및 삭제 작업이 발생합니다.

참고:

OnBeforeChange 이벤트에서 유효성 검사 오류가 발생하면 문서가 로드되지 않습니다. OnLoad 이벤트에서 try/catch 블록을 사용하여 이 유효성 검사 오류를 찾아내고 오류에 관계없이 문서를 로드할 수 있습니다.

예제

다음 예제에서는 OnBeforeChange 이벤트 처리기를 사용하여 필드의 데이터 유효성을 검사하고, 데이터가 유효하지 않으면 DataDOMEventObject 개체의 ReturnStatus 속성을 사용하여 변경 내용을 거부합니다.

[InfoPathEventHandler(MatchPath="/Customers/Customer/RepVisitDt", EventType=InfoPathEventType.OnBeforeChange)]
public void RepVisitDt_OnBeforeChange(DataDOMEvent e)
{
 IXMLDOMNode phone = thisXDocument.DOM.selectSingleNode    (@"/Customers/CustomerInfo/ContactDates/PhoneContactDt");
 if (phone.text == "")
 {
  e.ReturnMessage = "The Phone Contact Start date must be set prior to the Representative Visit date.";
  e.ReturnStatus = false;
  return;
 }
 // If the data is valid, eventObj.ReturnStatus = true.
 e.ReturnStatus = true;
 return;
}

참고 항목

참조

_DataDOMEventSink_Event 인터페이스
_DataDOMEventSink_Event 구성원
Microsoft.Office.Interop.InfoPath.SemiTrust 네임스페이스