我正在開發一個使用C#的小型Outlook AddIn,並且我無法獲得此AddIn以正確取消ItemSend過程。 我特此想以下情景: 考慮這個小的AddIn:C#Outlook AddIn約會事件'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是否可以停止保存更改?
是不是有一些ItemSending事件? ItemSend在發送實際項目後看起來像一個動作。 – CodingBarfield 2012-04-19 11:14:50
不幸的是,這是唯一的'發送'相關的事件,可以在Microsoft.Office.Interop.Outlook.ApplicationEvents_Event中訪問,它可以用於所有項目,就像我目前看到的一樣。 – xSNRG 2012-04-19 11:38:02