放下对象时的响应

在拖动对象后释放鼠标按钮时,Visual Basic 生成 DragDrop 事件。可用多种方法响应此事件。应记住,控件无法自动移动到新位置,但可编写代码将控件重新放到新位置(此位置由灰色轮廓的最后位置指示)。关于详细信息,请参阅“改变控件位置”。

在讨论拖放操作时,有两个术语非常重要:目标

术语 意义
被拖动的控件。此控件是 menu、timer、line 或 shape 外的任一对象。
目标 其上放控件的对象。此对象可为窗体或控件,能识别 DragDrop 事件。

鼠标指针位于某控件边框内时释放按钮,控件成为目标。指针位于窗体上无控件的区域上时,窗体成为目标。

DragDrop 事件提供三个参数:source,x 和 y。source 参数引用放到目标上的控件。

因为将源声明为 As Control,所以可象使用控件一样使用它─ 可引用其属性或调用其方法。

以下的示例说明了源和目标如何相互作用。示例中的源是 Image 控件,设置其 Picture 属性,以加载代表新文件夹的样本图标文件。它的 DragMode 属性已被设置为 1-Automatic 而其 DragIcon 属性被设置为一个样本拖放图标文件。目标也是 image 控件,它包含一个打开着的文件柜的图片。

将以下过程添加到第二个 image 控件的 DragDrop 事件中:

Private Sub Image2_DragDrop(Source As Control, _
      X As Single, Y As Single)
   Source.Visible = False
   Image2.Picture = LoadPicture("c:\Program _
      Files\Microsoft Visual _
      Basic\Icons\Office\Files03a.ico")
End Sub

把 Image1 拖放到 Image2 后,Image1 就会消失,而 Image2 会将其图片变为关闭着的文件柜图片。使用源参数将 Image1 的 Visible 属性变成 False。

注意 应小心使用参数。虽然知道它总是引用控件,但不一定清楚引用哪种控件。例如,如果控件是文本框,并试图引用 Source.Value,则由于文本框没有 Value 属性而导致运行时错误。

可用 If...Then...Else 语句及 TypeOf 关键字判断放了哪种类型的控件。

详细信息 请参阅“语言参考”及“用对象编程”中的“If…Then…Else”。