从C#拖放到Outlook

时间:2012-05-10 19:37:35

标签: c# drag-and-drop outlook

我有一个用C#编写的文档控制系统。将 从Outlook拖放到C#已经完成了一段时间 。现在许多文件都在C#应用程序中,用户自然希望能够从我的 向拖放 文档控制系统 Outlook。

由于文件存储在文件系统中(而不是SQL数据库中的blob),我让它们打开文件夹视图并从那里拖放。但是,这允许绕过文档管理系统的版本控制。

是否有可以构建的拖放消息,它会通知Outlook我正在删除的文件名和路径? 我怀疑这已经完成,但是我的从另一个方向回复的数量使搜索不堪重负。

2 个答案:

答案 0 :(得分:3)

从这里开始:

http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/f57ffd5d-0fe3-4f64-bfd6-428f58998603/

//put the file path is a string array
string[] files = new String[1];
files[0] = @"C:\out.txt";

//create a dataobject holding this array as a filedrop
DataObject data = new DataObject(DataFormats.FileDrop, files);

//also add the selection as textdata
data.SetData(DataFormats.StringFormat, files[0]);

//do the dragdrop
DoDragDrop(data, DragDropEffects.Copy);

答案 1 :(得分:0)

您必须遵循一系列步骤

  1. 选择Allow Drop属性为true

  2. 添加事件监听器(DragEnter& DragDrop

  3. 将此代码添加到您的cs文件

    private void splitContainer1_Panel2_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent("FileDrop", false))
            e.Effect = DragDropEffects.Copy;
        else
            e.Effect = DragDropEffects.None;
    }
    
    private void splitContainer1_Panel2_DragDrop(object sender, DragEventArgs e)
    {
        string[] files = new String[1];
        files[0] = @"C:\out.txt";
        //create a dataobject holding this array as a filedrop
        DataObject data = new DataObject(DataFormats.FileDrop, files);
        //also add the selection as textdata
        data.SetData(DataFormats.StringFormat, files[0]);
        //do the dragdrop
        DoDragDrop(data, DragDropEffects.Copy);
        if (e.Data.GetDataPresent("FileDrop", false))
        {
            string[] paths = (string[])(e.Data.GetData("FileDrop", false));
            foreach (string path in paths)
            {
                 // in this line you can have the paths to add attachements to the email
                Console.WriteLine(path);
            }
        }
    }