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 已经接受了您对约会项目所做的更改。

这是预期的行为吗?即使“取消”参数已更改为“true”,是否可以阻止 Outlook 保存更改?

4

1 回答 1

1

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

根据AppointmentItem.SendMSDN 文档 - 预期的行为是发送不会发生Cancel = true,检查器窗口保持打开状态并且更改仍然保存 - 只是没有发送给与会者。

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

于 2012-04-19T13:04:25.817 回答