Перетащите элементы в определенную группу в виде списка - PullRequest
0 голосов
/ 12 июля 2010

Я пытаюсь перетащить элемент между двумя группами в в одном и том же ListView, который называется listTasks.игнорирует проверки DataFormat для упрощения примера)

С listTasks.PointToClient(New Point(e.X, e.Y)) вы можете использовать listTasks.GetItemAt(p.X, p.Y), чтобы получить элемент ListView, с которым вы закончили.Есть ли что-то подобное для групп?Или, возможно, лучший способ определить, какая группа является целью перетаскивания?

1 Ответ

0 голосов
/ 21 июля 2010

Вы можете попробовать что-то вроде этого:

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

Возможно, вы захотите проделать еще какую-то работу, чтобы разместить ее в определенном месте в группе, но это должно помочь вам начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...