2012-03-06 18 views
0

我已經看到了這個無處不在,並嘗試了所有的解決方案,並且看起來並不像我想要的那樣。我希望能夠將文件從資源管理器拖放到ListView上,然後通過拖放操作對它們進行排序。我有這個簡單的代碼可以從資源管理器拖放。不能從資源管理器拖到ListView上

 this.messageView.AllowDrop = true; 
     this.messageView.Location = new System.Drawing.Point(12, 52); 
     this.messageView.Name = "messageGrid"; 
     this.messageView.Size = new System.Drawing.Size(121, 97); 
     this.messageView.TabIndex = 3; 
     this.messageView.UseCompatibleStateImageBehavior = false; 
     this.messageView.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop); 
     this.messageView.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter); 

和處理

 private void Form1_DragEnter(object sender, DragEventArgs e) 
     { 

     if (e.Data.GetDataPresent("FileGroupDescriptor")) 
      { 
      e.Effect = DragDropEffects.All; 
      } 
     } 

    private void Form1_DragDrop(object sender, DragEventArgs e) 
     { 
     messageView.Items.Add(e.Data.ToString()); 
     } 

這是奇怪的,因爲我改變對消息查看一個RichTextBox我有我的形式,它工作得很好。是否有額外的步驟,我必須做的?當我嘗試拖放到ListView上時,我從資源管理器中通過一條線獲取該圓。任何幫助,將不勝感激。謝謝。

回答

1

DragEnter和DragDrop事件應該在ListView中處理,而不是在Form中處理。 關於拖放:我不記得文章名稱,但我在codeproject中找到了一個很好的例子。

+0

他們在列表視圖中處理,只是他們的名字有點時髦。是否需要初始化InitializeComponent()以外的地方 – 2012-03-06 16:00:47

+2

將「FileGroupDescriptor」更改爲常量DataFormats.FileDrop,右邊的字符串應該是FileDrop,並且在DragDrop事件中您可以獲得正確的數據(可以迭代的字符串[] )使用e.Data.GetData()方法而不是ToString()。 – 2012-03-06 16:15:53

相關問題