DragOver 事件
      它在拖放操作正在进行时发生。可使用此事件对鼠标指针在一个有效目标上的进入、离开或停顿等进行监控。鼠标指针的位置决定接收此事件的目标对象。语法Private Sub Form_DragOver(source As Control, x As Single, y As Single, state As Integer)Private Sub MDIForm_DragOver(source As Control, x As Single, y As Single, state As Integer)Private Sub object_DragOver([index As Integer,]source As Control, x As Single, y As Single, state As Integer)DragOver 事件语法包括下列部分:部分 描述 
object 一个对象表达式,其值是“应用于”列表中的一个对象。 
index 一个整数,用来唯一地标识一个在控件数组中的控件。 
source 正在被拖动的控件。可用此参数在事件过程中引用各属性和方法—例如, Source.Visible = False。 
x, y 是一个指定当前鼠标指针在目标窗体或控件中水平 (x) 和垂直 (y) 位置的数字。这些坐标值通常用目标坐标系统来表示,该坐标系是通过 ScaleHeight、ScaleWidth、ScaleLeft 和 ScaleTop 属性而设置的。 
state 是一个整数,它相应于一个控件的转变状态,该控件在相关目标窗体或控件中正在被拖动: 
  0 = 进入(源控件正被向一个目标范围内拖动)。 
  1 = 离去(源控件正被向一个目标范围外拖动)。 
  2 = 跨越(源控件在目标范围内从一个位置移到了另一位置)。 
说明为了确定在拖动开始后和控件放在目标上之前发生些什么,应使用 DragOver 事件过程。例如,通过加亮目标(由代码设置 BackColor 或 ForeColor 属性)或者显示一个特定的拖动指针(由代码设置 DragIcon 或 MousePointer 属性)可验证有效的目标范围。为了确定一些关键转变点处的操作,应使用 state 参数。例如,当 state 的设置为 0(进入)时可使一个可能的目标加亮,而当 state 的设置为 1(离去)时可恢复该对象先前的外观。在 state 的设置为 0(进入)对象接收 DragOver 事件的情况: 如果源控件被放在该对象上,则该对象就接收一个 DragDrop 事件。
如果源控件没有被放在该对象上,则当 state 的设置为 1(离去)时该对象就接收另一个 DragOver 事件。 
注意 应使用 DragMode 属性和 Drag 方法指定开始拖动的方式。关于 source 参数的使用技巧,请参阅 DragDrop 事件说明主题部分。
DragOver 事件示例
本例演示一种指示有效的拖放目标的方法。当一个 TextBox 控件被拖过一个 PictureBox 控件时,指针从缺省的箭头变为特定的图标。当源被拖到其它地方时,指针恢复到缺省的状态。要尝试这个例子,可将代码粘贴到一个包含 1 个小 TextBox 和一个 PictureBox 的窗体的声明部分。将 TextBox 控件的 DragMode 属性设置为 1,然后按 F5 键并把 TextBox 拖过 PictureBox。Private Sub Picture1_DragOver (Source As Control, X As Single, Y As Single, State As Integer)
   Select Case State
      Case vbEnter
   ' 装载图标。
         Source.DragIcon = LoadPicture("ICONS\ARROWS\POINT03.ICO")
      Case vbLeave
         Source.DragIcon = LoadPicture()   ' 卸载图标.
   End Select
End SubPrivate Sub Picture1_DragDrop (Source As Control, X As Single, Y As Single)
   Source.DragIcon = LoadPicture()   ' 卸载图标。
End Sub

解决方案 »

  1.   


    DragDrop 事件
          在一个完整的拖放动作(即将一个控件拖动到一个对象上,并释放鼠标按钮)完成,或使用 Drag 方法,并将其 action 参数被设置为 2 (Drop) 时,该事件发生。语法Private Sub Form_DragDrop(source As Control, x As Single, y As Single)Private Sub MDIForm_DragDrop(source As Control, x As Single, y As Single)Private Sub object_DragDrop([index As Integer,]source As Control, x As Single, y As Single)DragDrop 事件语法包含下列部分:部分 描述 
    object 一个对象表达式,其值是“应用于”列表中的一个对象。 
    index 一个整数,用来唯一地标识一个在控件数组中的控件。 
    source 正在被拖动的控件。可用此参数将属性和方法包括在事件过程中 — 例如,Source.Visible = 0。 
    x, y 是一个指定当前鼠标指针在目标窗体或控件中水平 (x) 和垂直 (y) 位置的数字。这些坐标值通常用目标坐标系统来表示,该坐标系是通过 ScaleHeight、ScaleWidth、ScaleLeft 和 ScaleTop 属性而设置的。 
    说明DragDrop 事件过程用来控制在一个拖动操作完成时将会发生的情况。例如,可将源控件移到一个新的位置或将一个文件从一个位置复制到另一个位置。当 source 参数中可能使用多个控件时: 应使用 TypeOf 关键字和 If 语句一起确定与 source 表示的控件的类型。
    应使用该控件的 Tag 属性来标识一个控件,然后使用 DragDrop 事件过程。 
    注意 应使用 DragMode 属性和 Drag 方法来指定开始拖动的方法。一旦开始拖动,可使用 DragOver 事件过程来处理位于 DragDrop 事件前面的事件。DragDrop 事件示例
    本例演示将一个 PictureBox 控件放到另一个 PictureBox 控件上的视觉效果。要尝试这个例子,可将代码粘贴到一个含有 3 个 PictureBox 控件的窗体声明部分。将 Picture1 和 Picture2 的 DragMode 属性设置为 1(自动)。使用 Picture 属性将位图赋值给 Picture1 和 Picture2,然后按 F5 键并将 Picture1 或 Picture2 拖到 Picture3 上。Private Sub Picture3_DragDrop (Source As Control, X as Single, Y As Single)
       If TypeOf Source Is PictureBox Then
          ' 将 Picture3 位图设置为与源控件相同。
          Picture3.Picture = Source.Picture
       End If
    End Sub