首页 > 解决方案 > 如何正确实现 Outlook 检查器的 Wrapper 类

问题描述

C#、VSTO、Outlook 2016

我找到了Connect 类。但是当我尝试连接 NewInspector 事件时,总是会收到 IDE1007 错误。

public class Connect
{
private Outlook.Inspectors inspectors;
private List<OutlookInspector> inspectorWindows;

inspectors.NewInspector += new Outlook.InspectorsEvents_NewInspectorEventHandler(inspectors_NewInspector);

void inspectors_NewInspector(Outlook.Inspector Inspector) {
  // Check to see if this is a new window you don't already track
  OutlookInspector existingWindow = FindOutlookInspector(Inspector);
  if ( existingWindow == null ) {
    AddInspector(Inspector);
  }
}

显然没有找到检查员。我在这里想念什么?

稍后在 OutlookInspector.FindOutlookInspector 方法中找不到 Window 变量:

private OutlookInspector FindOutlookInspector(object window) {
  foreach ( OutlookInspector inspector in inspectorWindows ) {
    if ( inspector.Window == window ) {
      return inspector;
    }
  }
  return null;
}

标签: c#vstooutlook-addin

解决方案


好吧,当然 -inspectors.NewInspector +=线在任何方法之外。我怀疑它必须在构造函数中:

public Connect(Outlook.Inspectors Inspectors)
{
    inspectors = Inspectors;
    inspectorWindows = new List<OutlookInspector>();
    inspectors.NewInspector += new Outlook.InspectorsEvents_NewInspectorEventHandler(inspectors_NewInspector);
}

然后,您需要构造Connect该类的一个实例并将其传递Application.Inspectors给它。


推荐阅读