将Outlook附件从Outlook拖放到WPF数据网格中

时间:2014-01-13 21:01:13

标签: wpf drag-and-drop outlook

我看到这个代码更早地将附件文件(http://www.codeproject.com/Articles/28209/Outlook-Drag-and-Drop-in-C)从Outlook拖放到Windows窗体中,它在Windows窗体中工作正常,但我似乎无法使其与WPF一起使用。 我试图简单地将System.windows.form.IDataObject更改为System.Windows.IDataObject但它不起作用(因为我应该猜到)。

我也只是试图获取e.Data FileContents的内容,但总是会出错(当我在网上查看时,每个人都会这样)。

有没有人曾经将Outlook中的附件拖放到WPF?我完全失去了。

编辑:我不是试图从Windows资源管理器窗口获取文件(我这样做,但我知道如何)。这真的是从Outlook直接获得附件无法正常工作。我也完全清楚我可以简单地将Outlook中的文件转换为临时文件夹,然后将其放入我的程序中,但如果可能的话,我想避免这种不必要的步骤。

1 个答案:

答案 0 :(得分:3)

所以最后我找到了一个人确实做到的链接:

https://gist.github.com/MattyBoy4444/521547

对于那些奇迹的人。这就是我所做的。

  • 在C#中创建一个新项目(我的代码在VB中)并添加代码
  • 在我的主项目中引用新项目以便能够使用它
  • 在我的drop事件中,检查我是否有" FileGroupDescriptorW" drop数据中的对象,如果我检索文件,则调用该方法。

这是完整的代码

If obj.GetDataPresent("FileGroupDescriptorW") Then 'Outlook
    Dim oOutLookObj As New Helpers.OutlookDataObject(e.Data)
    Dim StrFiles() As String = oOutLookObj.GetData("FileGroupDescriptorW")
    Dim contentStream() As System.IO.MemoryStream = oOutLookObj.GetData("FileContents")
    ' Do intended work...
End if 

文件的名称位于StrFiles中,内容可在流中找到。两者都具有相同的数组大小并且排序正确。