2011-12-18 70 views
17

如何通過拖放將文件加載到表單?C#拖放文件形成

哪個事件會出現?

我應該使用哪個組件?

如何確定文件和其他屬性的名稱後拖放到表單?

謝謝!

代碼

private void panel1_DragEnter(object sender, DragEventsArgs e){ 
     if (e.Data.GetDataPresent(DataFormats.Text)){ 
       e.Effect = DragDropEffects.Move; 
       MessageBox.Show(e.Data.GetData(DataFormats.Text).toString()); 
     } 
     if (e.Data.GetDataPresent(DataFormats.FileDrop)){ 

     } 
    } 

OK,這個工程。

文件怎麼樣?我如何獲得文件名和擴展名?

並且這只是一個dragEnter操作。

+0

各種拖拽相關的事件都以協調的方式一起處理。您是否閱讀過相關文件? – 2011-12-18 09:56:37

+1

[如何將文件拖放到ac#應用程序中?](http://stackoverflow.com/questions/68598/how-do-i-drag-and-drop-files-into-ac-sharp -application) – 2011-12-18 10:25:12

回答

29

該代碼將遍歷並打印全名(包括擴展名)的所有文件拖動到窗口:

if (e.Data.GetDataPresent(DataFormats.FileDrop)) 
{ 
     string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); 
     foreach (string filePath in files) 
     { 
      Console.WriteLine(filePath); 
     } 
} 
5

檢查下面的鏈接瞭解更多信息

http://doitdotnet.wordpress.com/2011/12/18/drag-and-drop-files-into-winforms/

private void Form2_DragDrop(object sender, DragEventArgs e) { 
    if (e.Data.GetDataPresent(DataFormats.FileDrop)) { 
    string[] filePaths = (string[])(e.Data.GetData(DataFormats.FileDrop)); 
    foreach (string fileLoc in filePaths) { 
     // Code to read the contents of the text file 
     if (File.Exists(fileLoc)) { 
     using (TextReader tr = new StreamReader(fileLoc)) { 
      MessageBox.Show(tr.ReadToEnd()); 
     } 
     } 
    } 
    } 
} 

謝謝。

+1

質量答案需要鏈接內容摘要。並且要小心將鏈接發佈到自己的博客:它看起來像垃圾郵件非常多。 – 2011-12-18 10:08:44

+0

好的,謝謝科迪·格雷。將按照你的意見 – doit4dotnet 2011-12-18 14:53:28