那还不是一样?
你在oledragcomplete时删除不就可以了吗?

解决方案 »

  1.   

    基本代码是这样的:
    Dim xNow As ListItem
    Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
        Set xNow = ListView1.HitTest(x, y)
        ListView1.OLEDragMode = ccOLEDragAutomatic
    End SubPrivate Sub ListView1_OLECompleteDrag(Effect As Long)
        Dim x
        For i = 1 To ListView1.ListItems.Count
            If ListView1.ListItems.Item(i).Selected Then
                x = i
            End If
        Next i
        ListView1.ListItems.Remove x
    End SubPrivate Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
        Dim x1 As ListItem
        
        Set x1 = ListView1.ListItems.Add(, , Data.Files.Item(1))
    End Sub
      

  2.   

    to TechnoFantasy(www.applevb.com):
        谢谢你给我这段代码,我试了,有用,但有个问题,就是:你还没有拖出LISTVIEW框(稍微拖动一下)就删除了,我想我要的效果是要拖出了LISTVIEW框才删除。
        可有什么解决方法呢? 
      

  3.   

    用setcapture捕获鼠标位置,当鼠标在listview之外是 删除
      

  4.   

    的确没有什么好办法。因为OLEDrag Drop事件中都没有提供可以获得源对象的参数。办法是
    在MouseDown事件中加入一个判断的代码。
      

  5.   

    to TechnoFantasy(www.applevb.com):
        MouseDown事件里如何判断呢?我想像资源管理器一样,如果是拖到桌面,就创建快捷方式,如果是拖到资源管理器的另外一处则复制一份。