2011-06-27 60 views
1

我需要從datagridview中拖動表示文件的行,並且能夠將它們拖放到任何Windows應用程序,就像我從Windows資源管理器執行拖動一樣,對於遵循的程序有點困惑。將文件url從Winforms控件拖到外部應用程序

目前我已經將事件處理

private void gridFiles_MouseDown(object sender, MouseEventArgs e) 
{ 
    gridFiles.DoDragDrop(gridFiles.SelectedRows.Count, DragDropEffects.Move); 
} 

事情下面是我還需要能夠對行拖放到控制我的應用程序,而且在這種情況下,我會喜歡能夠獲取有關行的應用程序特定信息。

回答

0

我終於明白了。程序如下:

  • 創建一個DataObject,它將包含一個文件路徑數組。
  • 將數據對象類型FileDrop
  • 傳遞數據對象的程序的DoDragDrop

示例代碼:

if (is_in_selection) 
{ 
    sel_rows = from DataGridViewRow r in gridFiles.SelectedRows select r; 
    var files = (from DataGridViewRow r in gridFiles.SelectedRows select all_files[r.Index]); 
    string[] files_paths = files.Select((f) => f.FullPathName).ToArray(); 
    var data = new DataObject(DataFormats.FileDrop, files_paths); 
    gridFiles.DoDragDrop(data, DragDropEffects.Copy); 
} 
相關問題