WPF 拖放与 ctrl 键向下



我正在尝试以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 属性设置为相同的值,以便在用户释放鼠标按钮时"允许"执行这两个操作即可。

最新更新