C #Outlook AddIn约会事件'ItemSend'未正确取消

时间:2012-04-19 10:22:20

标签: c# outlook add-in

我正在使用C#开发一个小的Outlook AddIn,我无法让这个AddIn正确取消ItemSend进程。 我现在想到以下场景: 考虑一下这个小的AddIn:

    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是否可以停止保存更改?

1 个答案:

答案 0 :(得分:1)

您还可以使用Application.Inspectors.NewInspector事件并锁定AppointmentItem.Send事件。

根据AppointmentItem.Send MSDN文档 - 预期的行为是,当Cancel = true,检查员窗口保持打开且更改仍然保存时发送不会发生 - 只是没有发送给与会者

如果您想取消保存 - 您需要锁定AppointmentItem.Write事件以在发送前取消保存。