2012-06-04 4 views
1

쓰기 후에 Contactitem을 변경해야하는 Outlook Addin을 작성합니다. 은 내가 ItemChange 이벤트 핸들러Outlook ItemChange 처리기 (항목을 변경할 수 없음)

folder.ItemChange += new Outlook.ItemsEvents_ItemChangeEventHandler(ContactItemChange); 

를 사용하지만 내가 항목을 편집하고 때, 내 코드는 항상 백그라운드에서 실행 그래서 난 내 항목을 편집 할 수 없습니다.

item.AfterWrite 및 item.Write를 시도했지만 이벤트가 트리거되지 않습니다.

private void ContactItemChange(object item) 
    { 
     if (item is ContactItem) 
     { 
      ((ContactItem)item).AfterWrite += ThisAddIn_Write; 
     } 
    } 

도움이 필요하십니까? 안녕 Konobi

답변

1

이벤트 등록이 가비지 수집 중일 수 있습니다. folder이 개인 클래스 멤버로 선언되어 있고 AfterWrite 이벤트 처리기가 올바르게 등록되어 처리되지 않았는지 확인하기 위해 ContactItems (List<ContactItem> 또는 이와 비슷한)의 개인 클래스 구성원 컬렉션을 관리해야합니다.

참조 : this SO post which describes VSTO limitations with event handling 및 Office 이벤트에 올바르게 연결하는 방법을 참조하십시오.

관련 문제