为什么DragLeave事件不使用DragEventHandler?

时间:2012-06-08 18:54:21

标签: c# .net winforms

我只注意到这一点,因为我错误地尝试将DragEventHandler附加到DragLeave事件。我很惊讶地看到DragLeave事件就像一个普通的EventHandler。这对我来说很奇怪,因为DragDrop事件和DragEnter事件都使用DragEventHandlers。这有什么理由或解释吗?

资源:

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dragleave http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dragenter http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dragdrop

1 个答案:

答案 0 :(得分:3)

是。处理DragEnterDragDrop时,我们通常会要求或更新其他信息(例如当前拖动效果,活动修改键或所涉及的实际数据)。因此,传递给处理程序的事件参数必须提供对该信息的访问。

另一方面,我们可以(或应该)对DragLeave做的事情不多。我们不能取消请假。我们无法改变拖动引擎的行为或鼠标指针的形状,因为它是离开,系统告诉我们thank you for your cooperation, we're done now, maybe we'll get in touch with you again in the future的方式。