나는 열린 검사관의 목록을 유지한다는 점에서 위의 내용에 약간의 변형이 있습니다 (저는 검사관을 감싸서 목록에 보관합니다). 새 inspector 이벤트에 추가 한 후 유선 close 이벤트 close에서 제거합니다.
내 리본 코드에는 리본의 control.context를 사용하여 속성을 찾는 정적 메서드 FindOutlookInspector가 있습니다.
이 라인을 따라
뭔가 ..
OutlookInspector 내 포장 관리자 클래스입니다하지만 당신은 또한 난 단지 내가 할 수있는 리본 코드
void _inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) {
OutlookItem olItem = null;
try {
object newitem = Inspector.CurrentItem;
olItem = new OutlookItem(newitem);
if (olItem.Class == Outlook.OlObjectClass.olMail && olItem.MessageClass == "IPM.Note") {
OutlookInspector existingWindow = FindOutlookInspector(Inspector);
if (existingWindow == null) {
OutlookInspector window = new OutlookInspector(Inspector);
window.Close += new EventHandler(WrappedWindow_Close);
_windows.Add(window);
}
} catch (Exception ex) {
throw ex;
}
}
void WrappedWindow_Close(object sender, EventArgs e) {
OutlookInspector window = (OutlookInspector) sender;
window.Close -= WrappedWindow_Close;
_windows.Remove(window);
}
internal static OutlookInspector FindOutlookInspector(object window) {
foreach(OutlookInspector inspector in _windows) {
if (inspector.Window == window) {
return inspector;
}
}
return null;
}
그런 다음 메일 항목에 관심이 등 을 필요로하지 않을 수 있습니다
OutlookInspector window = ThisAddIn.FindOutlookInspector(control.Context);
76mel @ 확인 랩 관리자에게 얻을 수
FindOutlookInspector
를 호출해야합니다 명시 적으로 O를에게 항목의 COM 참조를 감소하기 bjects. YMMV. –