VB中,很多控件都可以实现拖放功能。拖放功能有内部控件间的拖放和由程序外部对程序本身的拖放。
文件拖放应该使用OLEDragDrop事件,而不是DragDrop事件。
OLEDragDrop事件的语法如下:
Private Sub object_OLEDragDrop(data As DataObject, effect As Long, button As Integer, shift As Integer, x As Single, y As Single)
以Form为例,实现方法如下:
建立一个窗体Form1,将OLEDragMode属性设置为 1 - Manual。
在Form1的OLEDragDrop事件代码如下例:
Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim f As Variant '注意对象类型
For Each f In Data.Files
Debug.print f
Next f
End Sub
然后运行,拖放文件到程序窗体,即可看到立即窗口打印的文件路径。
也可以使用
Debug.print Data.Files(1)
来显示第一个文件的路径。
注意,Files集合是从(1)开始,而不是(0)。