我正在尝试以wpf
形式实现拖放功能。目的是通过拖动来实现用户控件的副本(类似于使用 ctrl + Mouseleftbutton
拖放的 Windows 7 文件夹复制)。当 ctrl 键未按下时,删除工作正常,但当 ctrl 键按下时,不会触发删除事件。当 ctrl 键按下时,如何检测掉落?
您无需检测按键即可完成所需的操作。这完全取决于(DragEventArgs).AllowedEffects
属性的值。这是在调用 DragDrop.DoDragDrop
方法时最初设置的:
DragDrop.DoDragDrop(dragSource, data, DragDropEffects);
此处,DragDropEffects
属性表示类型 DragDropEffects
的枚举。如果将其设置为 DragDropEffects.Copy | DragDropEffects.Move
,则应该能够移动或复制(通过按住 Ctrl
键):
DragDrop.DoDragDrop(dragSource, data, DragDropEffects.Copy | DragDropEffects.Move);
现在,在接收类型为 DragEventArgs
的参数的拖放处理程序之一中,您应该看到 (DragEventArgs).AllowedEffects
属性将具有您在 DragDrop.DoDragDrop
方法中设置的值。只需将 (DragEventArgs).Effects
属性设置为相同的值,以便在用户释放鼠标按钮时"允许"执行这两个操作即可。