Windows为使用拖拽功能(drag-and-drop)将信息从一个地方移动或者复制到另一地方提供了很好的支持。例如,你可以在Windows Explorer中使用这一技术,以便将文件从一个位置移动或者复制到另一位置。同样,这一功能在Visual Basic中可以使用。本文中,我将给你讲述如何建立一个可以接受从Windows Explorer中拖曳而来的文件名的Visual Basic程序。
从另一个程序中拖拽得到的数据在Visual Basic的OLEDragDrop事件程序中已经得以标记。这就意味着,与这一程序相关联的任何控件都可以接收从Explorer拖拽而来的文件名,包括窗体,文本框以及其它VB控件。
当用户拖拽数据到控件时,这一事件程序传递一个包含数据的DataObject。具体地,它包含一个包括即将拖拽的文件名。请注意,你可以使用拖拽功能将其它类型的数据转入到一个VB程序,但这一篇文章中我将集中于文件名的拖拽功能操作。
为了允许在VB程序中拖拽文件名,设置接收对象(一个窗体或者控件)的OLEDropMode属性为1 – Manual。然后,在对象的OLEDragDrop事件程序中添加代码以获得文件名。这里是一个文本框控件的OLEDragDrop事件程序,这一控件显示被拖拽的文件名。除了设置文本框的OLEDropMode属性为1 – Manual,你还必须设置它的MultiLine属性为True。
Private
Sub Text1_OLEDragDrop(Data As DataObject, Effect As
Long, _
Button As Integer, Shift As Integer, X As Single, Y As
Single)
Dim i As Integer
For i = 1 To Data.Files.Count
Text1.Text = Text1.Text & Data.Files(i) &
vbCrLf
Next
End Sub
为了试用一下这个程序,可以打开Windows Explorer,并拖拽一个或几个文件名到文本框中,你将看到被转化的数据包含文件的完整路径。现在程序可以很好地满足你的需求。