다음을 통해 공유


SyncCallbacks.ItemConstraint 이벤트

중복 충돌 해결 정책이 ApplicationDefined로 설정된 중복 충돌 및 모든 비중복 제약 조건 충돌에 대해 제약 조건 충돌이 보고될 때 발생합니다.

네임스페이스: Microsoft.Synchronization
어셈블리: microsoft.synchronization.dll의 Microsoft.Synchronization

구문

‘선언
Public Event ItemConstraint As EventHandler(Of ItemConstraintEventArgs)
‘사용 방법
Dim instance As SyncCallbacks
Dim handler As EventHandler(Of ItemConstraintEventArgs)

AddHandler instance.ItemConstraint, handler
public event EventHandler<ItemConstraintEventArgs> ItemConstraint
public:
event EventHandler<ItemConstraintEventArgs^>^ ItemConstraint {
    void add (EventHandler<ItemConstraintEventArgs^>^ value);
    void remove (EventHandler<ItemConstraintEventArgs^>^ value);
}
/** @event */
public void add_ItemConstraint (EventHandler<ItemConstraintEventArgs> value)

/** @event */
public void remove_ItemConstraint (EventHandler<ItemConstraintEventArgs> value)
JScript supports the use of events, but not the declaration of new ones.

주의

응용 프로그램에서 이 알림을 사용하여 제약 조건 충돌 해결을 사용자 지정할 수 있습니다. 이렇게 하려면 응용 프로그램에서 이벤트 처리기로 전송된 ItemConstraintEventArgs 개체의 내용을 검사하고 처리한 다음 이 메서드에서 반환되기 전에 SetResolutionAction을 호출하여 충돌에 대한 해결 동작을 설정합니다.

ItemConstraintEventArgs 개체의 ConstraintConflictReason 속성이 Collision 이외의 값으로 설정된 경우 해결 동작을 SkipChange 또는 SaveConflict로 설정해야 합니다.

예제

다음 예제에서는 ItemConstraint 이벤트에 대한 처리기를 구현합니다. 이 처리기는 사용자에게 충돌 항목을 표시하고 사용자의 응답에 따라 제약 조건 충돌 해결 동작을 설정합니다.

Private Sub HandleItemConstraint(ByVal sender As [Object], ByVal args As ItemConstraintEventArgs)
    If ConstraintConflictReason.Collision = args.ConstraintConflictReason Then
        ' Display the two items that are in conflict and solicit a resolution from the user.
        Dim srcContact As New Contact(DirectCast(args.SourceChangeData, String()))
        Dim destContact As New Contact(DirectCast(args.DestinationChangeData, String()))
        Dim msg As String = ("Source change is " & srcContact.ToString() & vbLf & "Destination change is ") & destContact.ToString() & vbLf & "Click Yes to rename the source change and apply it." & vbLf & "Click No to rename the destination item and apply the source change." & vbLf & "Click Cancel to delete the destination item and apply the source change."
        Dim ccDlg As New ConstraintConflictDlg(msg)
        ccDlg.ShowDialog()

        ' Set the resolution action based on the user's response.
        args.SetResolutionAction(ccDlg.Resolution)
    Else
        args.SetResolutionAction(ConstraintConflictResolutionAction.SaveConflict)
    End If
End Sub
void HandleItemConstraint(Object sender, ItemConstraintEventArgs args)
{
    if (ConstraintConflictReason.Collision == args.ConstraintConflictReason)
    {
        // Display the two items that are in conflict and solicit a resolution from the user.
        Contact srcContact = new Contact((string[])args.SourceChangeData);
        Contact destContact = new Contact((string[])args.DestinationChangeData);
        string msg = "Source change is " + srcContact.ToString() +
                   "\nDestination change is " + destContact.ToString() +
                   "\nClick Yes to rename the source change and apply it." +
                   "\nClick No to rename the destination item and apply the source change." +
                   "\nClick Cancel to delete the destination item and apply the source change.";
        ConstraintConflictDlg ccDlg = new ConstraintConflictDlg(msg);
        ccDlg.ShowDialog();

        // Set the resolution action based on the user's response.
        args.SetResolutionAction(ccDlg.Resolution);
    }
    else 
    {
        args.SetResolutionAction(ConstraintConflictResolutionAction.SaveConflict);
    }
}

참고 항목

참조

SyncCallbacks 클래스
SyncCallbacks 멤버
Microsoft.Synchronization 네임스페이스

개념

제약 조건 충돌 검색 및 해결