2

C# を使用して小さな Outlook アドインを開発していますが、このアドインで ItemSend プロセスを適切にキャンセルすることができません。ここでは、次のシナリオを考えています: この小さなアドインを考えてみましょう:

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        ((Outlook.ApplicationEvents_Event)this.Application).ItemSend += new ApplicationEvents_ItemSendEventHandler(ThisAddIn_ItemSend);
    }

    void ThisAddIn_ItemSend(object Item, ref bool Cancel)
    {
        System.Windows.Forms.MessageBox.Show("You can't save it, it's in the past!");
        Cancel = true;
        return;
    }

現在、既存の予定項目を変更しようとすると、場所など、予定ウィンドウで開いたときにいくつかの値が変更されます。予定ウィンドウで「送信」ボタンを押すと、テキストボックスのメッセージが期待どおりに表示されます. しかし問題は、Outlook がこのキャンセルを無視し、変更を既に保存していることです。発生する唯一のことは、予定ウィンドウが閉じられていないことです。ただし、明示的に保存せずに単にウィンドウを閉じると、Outlook が予定アイテムに加えられた変更を既に受け入れていることがわかります。

これは意図した動作ですか?Cancel パラメータが "true" に変更されている場合でも、Outlook で変更の保存を停止できますか?

4

1 に答える 1

1

Application.Inspectors.NewInspectorイベントを使用して、イベントにラッチすることもできますAppointmentItem.Send

MSDN のドキュメントによるとAppointmentItem.Send、予想される動作はCancel = true、インスペクタ ウィンドウが開いたままになり、変更が保存されたままの場合に送信が行われないことです。出席者に送信されないだけです。

AppointmentItem.Write保存をキャンセルする場合は、送信前にイベントをラッチして保存をキャンセルする必要があります。

于 2012-04-19T13:04:25.817 に答える