用鼠标和键盘修改放下效果和用户反馈

可用 buttonshift 参数响应鼠标按钮和 SHIFT、CTRL 和 ALT 键的状态来增强 OLEDragDrop 和 OLEDragOver 事件。例如,在控件中拖动数据时,用户可按 CTRL 键执行复制操作,按 SHIFT 键来执行移动操作。

在下例中用 OLEDragDrop 事件的 shift 参数判断在放数据时是否按下了 SHIFT 键。若是,则执行移动操作,否则执行复制操作。

Private Sub txtTarget_OLEDragDrop(Data As _ 
      VB.DataObject, Effect As Long, Button As _
      Integer, Shift As Integer, X As Single, _
      Y As Single)
   If Shift And vbCtrlMask Then
      txtTarget.Text = Data.GetData(vbCFText)
      Effect = vbDropEffectCopy
   Else
      txtTarget.Text = Data.GetData(vbCFText)
      Effect = vbDropEffectMove
   End If
End Sub

可用 button 参数隔离并响应各种鼠标按钮状态。例如,可同时按下鼠标左右按钮,来移动数据。

当拖动源对象经过目标并按下鼠标按钮或 SHIFT、CTRL、ALT 键时,为了向用户指出即将执行的操作,可设置 OLEDragOver 事件的 shiftbutton 参数。例如,为了在拖动操作中按下 SHIFT 键时向用户指出将要执行的操作,可在 OLEDragOver 事件中添加下述代码:

Private Sub txtTarget_OLEDragOver(Data As _
      VB.DataObject, Effect As Long, Button As _
      Integer, Shift As Integer, X As Single, _
      Y As Single, State As Integer)
   If Shift And vbCtrlMask Then
      Effect = vbDropEffectCopy
   Else
      Effect = vbDropEffectMove
   End If
End Sub

详细信息 关于响应鼠标和键盘状态的详细信息,请参阅“检测鼠标按钮”和“检测 SHIFT、CTRL 和 ALT 键的状态”。