【发布时间】:2013-11-28 19:00:15
【问题描述】:
在我的 Outlook 加载项中,我试图获取有关用户拖放到 MAPI 商店中的所有项目的信息(我正在使用 Redemption 库)。
我的第一次尝试是挂钩 MessageCreated 事件...
myRDOStore.OnMessageCreated += new IRDOStoreEvents_OnMessageCreatedEventHandler(myRDOStore_OnMessageCreated);
棘手的部分是我需要捕获与一个集合同时拖放的所有项目,我猜这意味着保留每条传入的新消息的某些方面(可能是 EntryId)。
现在,问题显然是我无法将一堆任意事件的结果联系在一起,所以我正在研究ActiveExplorer().Selection 集合并试图想办法确定哪些项目已被拖动和从那里掉到我的存储中。
我没有太多运气,因为集合的内容似乎有点随意(例如,当我在事件处理程序中检查它时,当拖动 1 个项目时,Selection 中会有两个项目,或者当触发的一系列事件将是例如选择中的 2 个项目,然后在下一个事件中出现 1 个,然后在下一个事件中出现 1 个等)。
除此之外,我的一个用例是能够从 Outlook 外部拖动项目,我猜这不会包含在 Selection 集合中。
是否有解决此问题的标准方法?这似乎是一件很常见的事情——将一堆文件拖到一个文件夹中,并能够作为一个集合获取关于它们的一些信息,但我就是想不通。非常感谢任何指导。
【问题讨论】:
-
尝试将您的问题缩小到特定用例,而不是尝试通过一篇文章解决所有拖放问题。清楚地说明您从哪里拖动(Outlook、WPF、WinForms、Explorer 等)以及要拖动到哪里 - 很难理解。确定来源和目标将使我们更容易为您提供指导。
-
@SliverNinja:抱歉,我写帖子的时候有点着急。我的来源是 Outlook 和 Explorer,我的目标是 Outlook。实际上,我已经提出了一个我对使用计时器相当满意的解决方案。有机会我会把代码贴出来,以防其他人有用。
标签: c# outlook vsto outlook-addin outlook-redemption