我有一个用C#编写的文档控制系统。将 从Outlook拖放到C#已经完成了一段时间 。现在许多文件都在C#应用程序中,用户自然希望能够从我的 向拖放 文档控制系统到 Outlook。
由于文件存储在文件系统中(而不是SQL数据库中的blob),我让它们打开文件夹视图并从那里拖放。但是,这允许绕过文档管理系统的版本控制。
是否有可以构建的拖放消息,它会通知Outlook我正在删除的文件名和路径? 我怀疑这已经完成,但是我的从另一个方向回复的数量使搜索不堪重负。
答案 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)
您必须遵循一系列步骤
选择Allow Drop
属性为true
添加事件监听器(DragEnter
& DragDrop
)
将此代码添加到您的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);
}
}
}