Подключение к настраиваемым обработчикам событий
Outlook создает события, чтобы уведомить надстройки о том, что что-то произошло, например что в папку "Входящие" получен новый почтовый элемент. Надстройки могут указывать Outlook, что в случае конкретного события следует выполнить определенные действия. Этот механизм оповещения и обратного вызова поддерживается делегатами .NET Framework. Основная сборка взаимодействия Outlook (PIA) определяет делегаты, к которым можно подключить методы обратного вызова для обработки соответствующих событий. В этом разделе описывается процесс определения метода обратного вызова и его подключение к объекту Outlook в качестве обработчика события.
Создание метода обратного вызова
Обратный вызов это метод, реализуемый для обработки конкретного события и выполняемый источником уведомления. В Outlook надстройки могут реализовать методы обратного вызова, чтобы реагировать на определенные события, создаваемые Outlook. Этот метод обратного вызова должен соответствовать сигнатуре делегата этого события. Например, чтобы реализовать обработчик для события ItemSend, необходимо объявить метод обратного вызова, соответствующий сигнатуре нужного делегата:
public delegate void ApplicationEvents_11_ItemSendEventHandler(object Item, ref bool Cancel)
Public Delegate Sub ApplicationEvents_11_ItemSendEventHandler(_
ByVal Item As Object, ByRef Cancel As Boolean)
При определении метода обратного вызова игнорируйте ключевое слово Delegate, которое в противном случае определило бы другой делегат. Ниже показан пример метода обратного вызова, MyItemSendEventHandler:
public void MyItemSendEventHandler(object Item, ref bool Cancel)
Public Sub MyItemSendEventHandler (_
ByVal Item As Object, ByRef Cancel As Boolean)
…
End Sub
Подключение метода обратного вызова
Реализованный метод обратного вызова для события можно подключить к объекту Outlook, чтобы Outlook вызывал этот метод в качестве обработчика этого события. Обратите внимание, что событие может обрабатываться несколькими обработчиками события, и именно тут играют свою роль делегаты, назначающие обработку событий обработчикам.
Продолжая последний пример задания обработчика для события ItemSend объекта Application, чтобы подключить MyItemSendEventHandler к объекту Application в C#, создайте экземпляр объекта делегата, передайте MyItemSendEventHandler в конструктор объекта делегата, а затем добавьте этот объект делегата в событие ItemSend, используя оператор +=:
app.ItemSend += new ApplicationEvents_11_ItemSendEventHandler(MyItemSendEventHandler)
В Visual Basic с помощью оператора AddHandler сопоставьте событие ItemSend с обработчиком событий MyItemSendEventHandler:
AddHandler app.ItemSend, AddressOf MyItemSendEventHandler