次の方法で共有


カスタム イベント ハンドラーに接続する

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)

コールバック メソッドを定義するときは、別のデリゲートを定義するデリゲート キーワード (keyword)を無視します。 サンプル コールバック メソッド MyItemSendEventHandler を次に示します。

public void MyItemSendEventHandler(object Item, ref bool Cancel)
Public Sub MyItemSendEventHandler (_
    ByVal Item As Object, ByRef Cancel As Boolean)
…
End Sub

コールバック メソッドを接続する

イベントのコールバック メソッドを実装した後、それを Outlook オブジェクトに接続して、そのイベントのイベント ハンドラーとしてそのメソッドを呼び出すことを Outlook に認識させることができます。 1 つのイベントを複数のイベント ハンドラーで処理でき、このような場合にイベント ハンドラーにイベント処理を割り当てるデリゲートが役割を果たすことに注意してください。

Application オブジェクトの ItemSend イベント用のイベント ハンドラーを指定する最後の例では、C# で MyItemSendEventHandlerApplication オブジェクトに接続するために、デリゲート オブジェクトのインスタンスを作成し、 MyItemSendEventHandler をデリゲート オブジェクトのコンストラクターに渡してから、+= 演算子を使用してこのデリゲート オブジェクトを ItemSend イベントに追加します。

app.ItemSend += new ApplicationEvents_11_ItemSendEventHandler(MyItemSendEventHandler)

Visual Basic では、 AddHandler ステートメントを使用して ItemSend イベントを MyItemSendEventHandler イベント ハンドラーと関連付けます。

AddHandler app.ItemSend, AddressOf MyItemSendEventHandler

関連項目