Outlook加载项& drop锁定活动资源管理器

时间:2013-12-09 10:54:39

标签: wpf drag-and-drop event-handling outlook outlook-addin

我们正在为Outlook 2010开发一个VSTO加载项。它是一个WPF窗口,我们正在使用.NET 4.当用户将电子邮件从电子邮件列表拖到我们的添加时,会发生一些奇怪的事情-in。

拖动时,如果鼠标光标进入加载项内的任何区域,则电子邮件列表将无响应。这意味着,当用户尝试单击时,它将不再响应在另一个电子邮件条目上。它只显示以前选择的电子邮件内容。如果用户单击Outlook的资源管理器中的另一个文件夹(左侧的树控件),则可以“重置”电子邮件列表,然后一切恢复正常。

起初我认为这与我的drop事件处理程序中的一些未发布的对象有关。然而,在测试时我发现了一些奇怪的东西:

  • 即使只触发了DragOver事件,也会出现问题(所以如果没有发生丢弃)。

  • 仅当加载项的面板停靠在Outlook内部时,或者如果它未对接并且它与Outlook窗口重叠(见图1),则会出现此问题。 如果两个窗口没有重叠,则不会出现问题。(Outlook窗口位于左侧,我们的加载项位于右侧。)

图片1.重叠,在这种情况下会出现问题:

Picture 1. Overlap, the problem occurs in this case.

图片2.没有重叠,一切正常: Picture 2. No overlap, everything works fine.

  • 如果我在外部应用程序(而不是加载项)中显示我们的面板,则它是相同的:仅当窗口与Outlook窗口重叠时才会出现问题。

我们正在使用一些第三方控件(来自Infragistics),但它似乎无关紧要(例如,当光标移动到我们的加载项中的普通WPF复选框时会发生同样的情况)。主网格没有明确设置“AllowDrop”属性,或者与drag& amp;下降。我提到的复选框也是如此。

因此,如果有人遇到类似的事情,我会很感激可能导致此问题的任何提示。如有必要,我将提供更多详细信息(XAML或事件处理程序)。

1 个答案:

答案 0 :(得分:1)

您的问题的根本原因必定是某些实现错误无法正确释放COM对象。 这些症状似乎都出现在Windows窗体和WFP中,尽管它们并不完全相同。我建议您尝试以下链接以了解问题的根源。

首先,你应该尝试的第一个也是最简单的事情就是把它放在你的拖拽回调函数中(保留和放弃我会说)。它似乎以某种方式释放了对象。

e.Data.GetData("RenPrivateMessages");

不能归功于它... Kudos去了Matt Quinn(参见第一条链接评论)。 Bravo Matt ...... !!!

请查看完整说明: http://www.add-in-express.com/creating-addins-blog/2012/03/26/outlook-task-pane-drag-drop/

您也有一个有趣的解决方法: http://blogs.msdn.com/b/emeamsgdev/archive/2011/08/13/drag-and-drop-in-outlook-2010.aspx

此致 VEV