在 Outlook VSTO 插件中调用了 SelectionChane,但 ActiveExplorer().Selection.Count = 0:

Posted

技术标签:

【中文标题】在 Outlook VSTO 插件中调用了 SelectionChane,但 ActiveExplorer().Selection.Count = 0:【英文标题】:SelectionChane is called but ActiveExplorer().Selection.Count = 0 in Outlook VSTO AddIn: 【发布时间】:2020-05-21 07:38:43 【问题描述】:

我尝试获取当前选择的 AppointmentItem。为此,我处理 ActiveExplorer 的 SelectionChange 事件。 SelectionChange 经常被调用,但是当我尝试获取 Selection 时,计数 = 0。这是 Outlook 的已知错误吗?您可以通过以下方式自行检查:

[...]

currentExplorer.SelectionChange += new Outlook.ExplorerEvents_10_SelectionChangeEventHandler(Selection_Change);

[...] 然后在这里处理事件:

private void Selection_Change()

    log.Info("currently selected: "+this.Application.ActiveExplorer.Selection.Count);

运行您的插件打开日历或收件箱。我/你会得到很多"current selected: 0"

但在文档中,它说除了 FileFolders Outlook 会自动选择当前视图中的第一项:https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/bb645132(v%3Doffice.14) 因此 Selection.Count 不应该是 0???

对此有任何建议

【问题讨论】:

您从哪里获得 Explorer 类的实例?您使用哪个 Outlook 版本? 【参考方案1】:

Selection.Count 属性返回一个整数,指示选择中的项目或对话标题的数量。它在我的机器上就像一个魅力。很可能您的代码有问题 - 您打开了多个资源管理器窗口并从非活动窗口中获取选择对象等。

【讨论】:

【参考方案2】:

Selection.Count == 0 绝对没有问题。切换到日历视图中的日历文件夹,然后单击没有约会的时间段 - Selection.Count 将为 0。

【讨论】:

以上是关于在 Outlook VSTO 插件中调用了 SelectionChane,但 ActiveExplorer().Selection.Count = 0:的主要内容,如果未能解决你的问题,请参考以下文章

挂钩事件 Outlook VSTO 在主线程上继续工作

Outlook VSTO插件在Outlook中不可见。

如何从 VSTO 插件中找出当前版本的 Outlook?

VSTO开发的Outlook插件怎么部署到客户端机器上

VSTO Outlook 插件:当用户拖放定期约会时,无法在 Item_Change 事件中获取 AppointmentItem

VSTO Outlook 插件需要保存设置,最好的方法是啥?