2010-08-06 111 views

回答

0

如果该文件已经存在,你可以做这样的:如果该文件不存在,那么该怎么办呢DoDragDrop

Transferring Virtual Files to Windows Explorer in C#

+0

@Giorgi:这将在内部上传(客户端 - >服务器拖动),我拖动或只是它将复制? – 2010-08-09 08:35:58

+0

@Giorgi:我的要求就像我连接到一个FTP服务器登录它,然后从那里返回文件/文件夹列表绑定到树视图,然后打开在Windows资源管理器的帮助下process.Start现在当我拖放一些的项目到FTP服务器文件夹内部上传应该haapen,如果我拖动n从FTP服务器文件夹下垂到本地下载应该发生在内部。 – 2010-08-09 08:40:19

+0

@Swapnil - 当你放弃文件时会发生什么,取决于你是否放弃它。主要的是你应该为你拖动的文件提供内容。 – Giorgi 2010-08-09 10:08:38

0

当你想成为安放目标,则需要能丢弃的形式:

AllowDrop = true; 

在这一点上,你需要线了一些事件处理程序:

  • ItemDrag
  • 的dragover
  • 的dragenter
  • DragLeave
  • 的DragDrop

所以,如果你有一个列表框,想列出文件下降,是这样的:

private void listBox1_DragDrop(object sender, DragEventArgs e) 
{ 
    foreach (string fileName in (string[])e.Data.GetData(DataFormats.FileDrop)) 
    { 
     listBox1.Items.Add(fileName); 
    } 
} 

安放源,略更多的工作和最好的工作,如果你真的有一个真实的文件的文件名(见MSDN链接),有一个完整的系列,描述所有的技巧Shell Style Drag and Drop in .NET其中为您提供一个完整的库供您使用。

一些来源:

+0

我想从我的应用程序列表视图拖放到Windows资源管理器。 – 2010-08-06 08:59:02

+0

我看到了 - 编辑中...继续。 – 2010-08-06 09:05:02

+0

你真的知道你正在拖动的“文件”是否存在吗? – 2010-08-06 09:05:27

0

当用户手动移动项目时,该代码片段非常接近从“item”(仅替换“test.txt”字符串)到任何浏览器窗口(包括ftp)的拖动。

private void Form1_MouseDown(object sender, MouseEventArgs e) { 
    string[] files = new string[] { @"c:\temp\test.txt" }; 
    this.DoDragDrop(new DataObject(DataFormats.FileDrop, files), DragDropEffects.Copy); 
} 
相关问题