Событие SyncCallbacks.ItemConstraint
Происходит при получении сообщения о конфликте ограничения применительно к конфликтам совпадения, если политика разрешения конфликтов совпадения задана как ApplicationDefined, и применительно ко всем остальным конфликтам ограничения, отличным от конфликтов совпадения.
Пространство имен: Microsoft.Synchronization
Сборка: Microsoft.Synchronization (в microsoft.synchronization.dll)
Синтаксис
'Декларация
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, прежде чем выйти из этого метода.
При присваивании свойству ConstraintConflictReason объекта ItemConstraintEventArgs любого значения, кроме 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