3

我正在尝试以形式实现拖放功能wpf。目的是通过拖动来实现复制用户控件(类似于使用ctrl+Mouseleftbutton拖放复制Windows 7文件夹)。当 ctrl 键没有按下时,drop 可以正常工作,但是当ctrl键按下时,drop 事件不会被触发。按键按下时如何检测跌落ctrl

4

1 回答 1

3

你不需要检测按键来完成你所追求的。这一切都取决于(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属性设置为相同的值,以便在用户释放鼠标按钮时“允许”这两个操作发生。

于 2013-09-11T10:04:04.270 回答