2011-11-22 143 views
5

最近我一直很難在窗體外實現拖放功能。在windows窗體之間和窗體之間以及從桌面到窗體的拖放操作都沒有問題。我創建了一個應用程序,您可以在其上拖放任何項目。我的問題是,我不知道如何實現我的應用程序的反轉,從我的應用程序拖放到桌面或窗體外的任何目標。任何建議和想法,我會感激地接受。謝謝。從窗體拖放到桌面和Windows資源管理器

我們正在談論的文件和文件夾的位置確定:)

+1

如果您正在拖動已存在的文件,那麼您只需使用HDROP。如果您希望資源管理器基於用戶拖動的內容創建一個新文件,那麼您可以使用[從空白創建東西:用於.NET的開發人員友好的虛擬文件實現]上的示例(http://blogs.msdn.com/ b /延遲/存檔/ 2009/10月26日/創建-東西 - 從 - 無 - 開發者友好的虛擬文件的實現換net.aspx)。 –

+1

你在這裏找到一些建議和示例 http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/ce2be58a-9b4a-4bae-8759-512e3a47ff85/ – user629926

+0

可能的重複[Drag and drop to桌面/資源管理器](http://stackoverflow.com/questions/3040415/drag-and-drop-to-desktop-explorer) –

回答

0

我不知道它控制你正在使用;大多數.net控件都有一個方法DoDragDrop。如果它適合你,請使用此方法。

private void PopulateListView() 
{ 
    string directoryPath=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
    String[] files=System.IO.Directory.GetFiles(directoryPath); 
    if(files!=null) 
    { 
     foreach(string file in files) 
     { 
      listView1.Items.Add(new ListViewItem(file)); 
     } 
    } 
} 


private void listView1_MouseDown(object sender, MouseEventArgs e) 
{ 
    System.Collections.Specialized.StringCollection filePath = new 
    System.Collections.Specialized.StringCollection(); 
    if (listView1.SelectedItems.Count > 0) 
    { 
     filePath.Add(listView1.SelectedItems[0].Text); 
     DataObject dataObject = new DataObject(); 
     dataObject.SetFileDropList(filePath); 
     listView1.DoDragDrop(dataObject, DragDropEffects.Copy); 
    } 
} 
+0

它不適用於文件夾。 – Argnist

相關問題