代码之家  ›  专栏  ›  技术社区  ›  Jay Wick

将项放到ListView中的特定组中

  •  0
  • Jay Wick  · 技术社区  · 16 年前

    我正在努力 在两个组之间拖动项目 在里面 相同的 ListView称为“ListTasks”。

    Private Sub listTasks_ItemDrag(ByVal sender As Object, ByVal e As ItemDragEventArgs) Handles listTasks.ItemDrag
        listTasks.DoDragDrop(listTasks.SelectedItems, DragDropEffects.Move)
    End Sub
    
    Private Sub listTasks_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles listTasks.DragEnter
        e.Effect = DragDropEffects.Move
    End Sub
    
    Private Sub listTasks_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles listTasks.DragDrop
        ' how do I tell what group is being dropped into?
    End Sub
    

    (注意 listTasks_DragEnter 忽略数据格式检查以简化示例)

    用 listTasks.PointToClient(New Point(e.X, e.Y)) 你可以使用 listTasks.GetItemAt(p.X, p.Y) 要获取ListView项,请结束。有这样的团体活动吗?或者是一个更好的方法来确定拖放的目标是哪个组?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Tony Abrams    16 年前

    您可以尝试如下操作:

    Private lviDraggedItem As ListViewItem
    
    Private Sub ListView1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListView1.DragEnter
        e.Effect = DragDropEffects.Move
    End Sub
    
    Private Sub ListView1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListView1.DragDrop
    
        Dim htInfo As ListViewHitTestInfo = ListView1.HitTest(ListView1.PointToClient(New Point(e.X, e.Y)))
    
        Dim lviSibling As ListViewItem = htInfo.Item
    
        Dim lvgGroup As ListViewGroup = lviSibling.Group
    
        lvgGroup.Items.Add(lviDraggedItem)
    
        lviDraggedItem = Nothing
    
    
    End Sub
    
    Private Sub ListView1_ItemDrag(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles ListView1.ItemDrag
    
        lviDraggedItem = e.Item
        ListView1.DoDragDrop(ListView1.SelectedItems, DragDropEffects.Move)
    
    
    End Sub
    

    你可能会想做更多的工作,把它放在小组中的一个特定的地方,但这应该能让你开始。