2013-02-04 64 views
1

下面的代碼拒絕使用鼠標右鍵單擊進行拖放。當我右鍵單擊鼠標時,我看到正確的上下文菜單,但我無法拖放,儘管我確實有DragDrop,DragEnter和DragOver的事件處理程序。是否因爲我無法使用上下文菜單並在相同的右鍵單擊上拖放?我究竟做錯了什麼?非常感激你的幫助。爲什麼在我的鼠標右鍵單擊時拖放不起作用?

private void treeList1_MouseDown(object sender, MouseEventArgs e) 
{ 
    TreeList tree = sender as TreeList; 
    Point pt = tree.PointToClient(MousePosition); 
    TreeListHitInfo info = tree.CalcHitInfo(pt); 

    if (e.Button == MouseButtons.Right && ModifierKeys == Keys.None && tree.State == TreeListState.Regular) 
    { 
     if (nodeType == typeof(X)) 
     { 
      tree.ContextMenuStrip = XContextMenu; 
      tree.FocusedNode = info.Node; 
      treeList1.AllowDrop = true; 
      tree.AllowDrop = true; 
     } 
     currentFocusNode = tree.FocusedNode; 
     return; 
    } 
} 

回答

1

你不是調用DoDragDrop方法。

下面是使用的DragDrop

在你的榜樣的example,前return;

treeList1.DoDragDrop(currentFocusNode, DragDropEffects.Copy); 
+0

謝謝,我添加了你提到的。現在我確實看到了一箇中性,我確實看到了一條橫線。在你改變之前,我沒有看到。但是它的直徑是多少?我還沒有做什麼? – user1298925

+0

您是否嘗試使用我鏈接的示例進行遊戲? – Blachshma

+0

再次感謝您。非常有用的例子。我會將你的答案標記爲答案。如果您有任何其他有關DragDropEffects的不同枚舉含義和AllowedEffect含義的解釋的好網址,請爲我列出它,非常感謝您的回答。 – user1298925

1

這裏是你怎麼能夠例如做的DragDrop上ListView控件添加這樣的事情:

private void Form1_Load(object sender, EventArgs e) 
{ 
    listView1.AllowDrop = true; 
    listView1.DragDrop += new DragEventHandler(listView1_DragDrop); 
    listView1.DragEnter += new DragEventHandler(listView1_DragEnter); 
} 

void listView1_DragEnter(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Copy; 
} 

void listView1_DragDrop(object sender, DragEventArgs e) 
{ 
    listView1.Items.Add(e.Data.ToString()); 
} 
+0

我已經標記了答案,不過謝謝。我對所有DragDropEffects值的含義有疑問,例如copy/link/Move。如果您不想在這裏回答我的問題,我會把它作爲一個單獨的問題發佈,但我不會理解所有這些值之間的區別。謝謝 – user1298925

+0

當你用鼠標將一個文件移動到一個窗口時,拖動回車就是。拖放是將其移動到窗口並釋放鼠標按鈕時的拖放。 –

相關問題