2012-07-21 45 views
0
private void Form1_MouseDown(object sender, MouseEventArgs e) 
{ 
    string[] files = new string[] { @"C:\directory\of\file\to\copy.txt" }; 
    this.DoDragDrop(new DataObject(DataFormats.FileDrop,files), DragDropEffects.Copy); 
} 

這是我使用的代碼。C#拖放到桌面,並獲取目錄

嗯,它工作正常,但想獲得複製文件的目錄。 我該怎麼做?

+0

放棄的目標可能不是有路徑的東西(可能放入電子郵件中?) - 請解釋您打算做什麼,也許還有其他解決方案。例如,如果要將其他文件複製到文件夾中,則應該執行多文件拖動。 – 2012-07-23 22:57:46

回答

0

的路徑你得到是的DoDragDrop()的返回值,看是否真正下降發生了。接收應用程序對文件做了什麼是你無法找到的。可能是任何東西,包括根本不復制文件。隨機的例子只是在文本編輯器中打開文件,VS和記事本的行爲。

注意你怎麼給的例子只是拖動桌面,不桌面。如果您需要知道用戶想要複製文件的位置,請使用FileBrowserDialog。

+0

謝謝你的回答..但是..我給這個問題的例子確實拖動到桌面或資源管理器,當我拖放它 – mik4n 2012-07-21 15:23:48

+0

嗯,將它拖到VS或記事本,而不是看我在說什麼。關鍵是你無法找到它被用戶拖拽的地方。這完全是設計,D + D避免參與程序的實現細節。這使D + D變得非常普遍,接收丟棄的程序可以對丟棄的對象執行任何想要的操作。該Windows資源管理器使用它來複制文件是一個實現細節,它非常專用於資源管理器。但是你不能發現那個探險家得到了回報。所以你不能找出它被複制的地方。 – 2012-07-21 15:29:01

2

使用靜態路徑System.IO,可以提取目錄

Path.GetDirectoryName(@"C:\Users\JNK\Desktop\2136D.png");