1. 掌握 DragMode和DragIcon 属性。
2. 掌握 DragOver 事件。
3. 掌握 Drag 方法。
4. 了解鼠标拖放操作在程序设计中应用。
一、通过鼠标拖放实现图片的缩放
运行程序时,将原图片拖放到大小不同的两个Image控件中,可以将原图片放大或缩小显示。程序运行效果如图14-1所示。

本程序的设计步骤如下。
1. 向窗体中添加一个Image控件Image1,并在属性窗口中设置其Picture属性。
2. 向窗体中再添加两个Image控件Image1和Image2,设置它们的BorderStyle属性值为1—FixedSingle。
3. 按照图14-1所示,向窗体中添加3个标签,并设置其相应的Caption属性值。
4. 编写代码并运行程序。
PrivateSub Form_Load()
Image2.Stretch= True
Image3.Stretch= True
EndSub
PrivateSub Image2_DragDrop(Source As Control, X As Single, _
YAs Single)
Image2.Picture= Image1.Picture
EndSub
PrivateSub Image3_DragDrop(Source As Control, X As Single, _
YAs Single)
Image3.Picture= Image1.Picture
EndSub
二、拖动过程中鼠标指针的变化
设计一个程序,当窗体上的命令按钮控件被拖过一个PictureBox控件时,指针从缺省的箭头变为特定的图标;当命令按钮被拖到其他地方时,指针恢复到缺省状态,程序运行结果如图14-2所示。

本程序的设计步骤如下。
1. 向窗体中添加一个命令按钮Command1和一个PictureBox控件Picture1。
2. 设置命令按钮Command1的DragMode属性为:1—Automatic。
3. 添加如下代码,并调试通过。
PrivateSub Picture1_DragOver(Source As Control, X As Single, _
YAs Single, State As Integer)
Select Case State
CasevbEnter
Source.DragIcon=LoadPicture("C:\ProgramFiles" & _
"\MicrosoftVisualStudio\Common" & _
"\Graphics\Icons\Arrows\Point03.ico")
CasevbLeave
Source.DragIcon = LoadPicture()
EndSelect
EndSub
三、使用Drag方法
编写程序,使用Drag方法,设计如图14-3所示的应用程序,当用鼠标拖动窗体上的文件夹图标到文件柜处并释放鼠标按钮时,文件夹图标将从窗体上消失,且打开的文件柜将关闭。

本程序的设计步骤如下。
1. 向窗体中添加三个Image控件:Image1、Image2和Image3。
2. 设置它们的Picture属性,使Image1、Image2和Image3分别显示为文件夹、打开的文件柜、使用中的文件柜。
3. 在下划线处填写代码,并调试通过。
PrivateSub Image1_MouseDown(Button As Integer, Shift As Integer, _
XAs Single, Y As Single)
Image1.DragIcon =LoadPicture("C:\Program Files" & _
"\MicrosoftVisualStudio\Common" & _
"Graphics\Icons\Dragdrop\Dragfldr.ico")
EndSub
PrivateSub Image2_DragOver(Source As Control, X As Single, Y As _
Single,State As Integer)
Source.Drag vbEndDrag
Image2.Picture=LoadPicture("C:\ProgramFiles" & _
"\MicrosoftVisualStudio\Common" & _
"Graphics\Icons\Office\Files03a.ico")
EndSub
PrivateSub Image3_DragOver(Source As Control, X As Single, Y As _
Single,State As Integer)
Source.Drag vbCancel
EndSub
四、拖动具有编辑特性的控件
拖动窗体中的文本框,放置到列表框中,文本框中的文本被添加到列表框中,同时文本框被清空。程序运行如图14-4所示。

本程序使用了Drag方法拖动文本框,为保留该文本框的编辑特性,只有当按下Shift键的同时,才可以拖动文本框。请补充以下代码,并调试通过。
PrivateSub List1_DragDrop(Source As Control, X As Single, Y As Single)
List1.AddItem
Text1.Text= ""
Text1.Drag
EndSub
PrivateSub Text1_MouseDown(Button As Integer, Shift As Integer, _
XAs Single, Y As Single)
If Then Text1.Drag
EndSub
PrivateSub Command1_Click()
End
EndSub