我正在尝试以wpf形式实现拖放功能。目的是通过拖动来实现用户控件的副本(类似于使用ctrl + Mouseleftbutton拖放的Windows 7文件夹副本)。当Ctrl键没有按下时,拖放操作正常,但是当Ctrl键按下时,不会触发drop事件。按下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属性设置为相同的值,以“允许”用户释放鼠标按钮时进行两项操作。

关于wpf - WPF DragDrop与Ctrl键按下,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18736458/

10-12 01:57