2013-12-09 35 views
0

我们正在开发用于Outlook 2010的VSTO加载项。它是一个WPF窗口,我们使用的是.NET 4.当用户拖动e时出现了一些奇怪的事情从电子邮件列表发送到我们的加载项。Outlook加载项拖放功能锁定活动浏览器

拖动时,如果鼠标光标进入我们加载项中的任何区域,电子邮件列表将不响应。这意味着,当用户尝试点击另一个电子邮件条目时,它不会再作出反应。它将只显示先前选择的电子邮件内容。如果用户点击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.

  • 如果我告诉我们的面板在外部应用程序(而不是某个加载项),这是个e相同:只有当窗口与Outlook窗口重叠时才会出现此问题。

我们使用一些第三方控件(Infragistics的距离),但它似乎是无关的(同样的情况,当光标移过我们的外接正常WPF复选框,例如)。主网格不具有明确设置的“AllowDrop”属性,或与拖动相关的任何内容。我提到的复选框也是一样。

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

回答

1

您的问题的根本原因必须是一些实施错误,不能正确释放COM对象。 症状似乎同时出现在Windows窗体和WFP中,虽然它们并不完全相同。我建议你尝试一下以下的链接,以了解你的问题的底部。

作为第一个也是最简单的事情,你应该尝试的是把它放在你的拖动回调函数中(假设我会说&)。它似乎以某种方式释放该对象。

e.Data.GetData("RenPrivateMessages"); 

不能承认它...荣誉去马特奎恩(见第一个链接评论)。布拉沃马特... !!!

看一看这里查看完整的解释: 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

+1

注意[链接只有答案(HTTP ://meta.stackoverflow.com/tags/link-only-answers/info)是不鼓励的,所以SO答案应该是寻求解决方案的终点(而另一个引用的中途停留时间往往会过时随着时间的推移)。请考虑在此添加独立的摘要,并将链接保留为参考。 – kleopatra

+0

@VeV感谢您的链接,很高兴看到我并不孤单,解决这个问题。我也在考虑取消选择并重新选择该文件夹作为解决方法。请写一个简短的解决方法摘要,以便我可以接受您的答案。 – Marton