使用VS 2008我有一个带有2个ListView的窗体(我们称之为ListView1和ListView2)。 ListView1使用目录中的FileNames填充。当一个项目从ListView1拖到ListView2时,我有一些代码被执行。当我从ListView2 dragDrop到ListView1时,一些代码执行。我想要做的是,如果从ListView2拖拽到自身
,则不执行代码这是在drop:
之后调用的dragDrop方法 private void view_DragDrop(object dropTarget, DragEventArgs e)
我尝试过以下几项:
ListView data = (ListView)e.Data.GetData("System.Windows.Forms.ListView")
这返回null我想用上面做的就是查看data = dropTarget,不执行。
答案 0 :(得分:1)
您可以使用OriginalSource
属性验证事件的来源并确保目标不同。
因此,在您DragDrop
的{{1}}事件中,我会做以下事情:
ListView2
这将阻止任何从private void view_DragDrop(object dropTarget, DragEventArgs e)
{
if (e.OriginalSource == ListView2)
return;
//Rest of the code here
}
拖出的项目在ListView2
中触发您的代码执行。
答案 1 :(得分:0)
在表单范围内创建一个变量
object dfrom;
//your methods ect
private void view_ItemDrag(Object sender, System.Windows.Forms.ItemDragEventArgs e)
//your code to drag items
dfrom = sender
}
private void view_DragDrop(object dropTarget, System.Windows.Forms.DragEventArgs e)
{
if (dfrom == sender){return;}//this will protect both list boxes (assuming you can drag from both).
//Your code
}