2013-02-04 32 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

当你用鼠标将一个文件移动到一个窗口时,拖动回车就是。拖放是将其移动到窗口并释放鼠标按钮时的拖放。 –

相关问题