2012-04-19 2 views
2

C#을 사용하여 Outlook AddIn을 조금 개발 중이며이 AddIn에서 ItemSend 프로세스를 제대로 취소 할 수 없습니다. 나는 기존의 약속 항목을 변경하려고하면 약속 창에 열 때 내가 좋아하는, 그것의 일부 값을 변경, 지금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에서 변경 내용 저장이 중지 될 수 있습니까?

+0

일부 ItemSending 이벤트가 없습니까? ItemSend는 실제 아이템을 보낸 후 액션처럼 보입니다. – CodingBarfield

+0

불행히도이 항목은 Microsoft.Office.Interop.Outlook.ApplicationEvents_Event에서 액세스 할 수있는 유일한 '보내기'관련 이벤트입니다.이 이벤트는 지금까지 볼 수있는 한 모든 항목에서 작동합니다. – xSNRG

답변

1

Application.Inspectors.NewInspector 이벤트를 사용하고 AppointmentItem.Send 이벤트에 래치 할 수도 있습니다.

AppointmentItem.Send MSDN 설명서에 따르면 예상되는 동작은 Cancel = true 인 경우 보내기가 수행되지 않고 관리자 창이 열리고 변경 내용이 저장되어 참석자에게 전송되지 않을 때 발생합니다.

저장을 취소하려면 - 전송하기 전에 저장을 취소하려면 AppointmentItem.Write 이벤트를 래치해야합니다.

+0

불행히도이를 검증 할 수 있으려면 이벤트 처리 메서드 내에 AppointmentItem이 필요합니다. AppointmentItem.Write에는 하나의 매개 변수, ref bool cancel 만 있습니다. – xSNRG

+0

래퍼 클래스에 대한 참조 만 저장하면됩니다. ['InspectorWrapper' howto] (http://msdn.microsoft.com/en-us/library/ff973716.aspx)를보십시오. 속성 참조를 유지해야합니다. – SliverNinja

+0

대단히 감사합니다. 그게 효과가 있었어. – xSNRG

관련 문제