2009-03-13 11 views
0

Ich habe eine Listbox, aus der ich in die ListView ziehe. Jetzt habe ich Gruppen in der ListView, wenn das Element aus der ListView an der Stelle der Listviewgroup gelöscht wird, muss es unter dieser Gruppe hinzufügen.C# Drag & Drop in Listenansicht

Dies ist der Code, der den Tropfen behandelt.

private void lstvPositions_DragDrop(object sender, DragEventArgs e) 
    { 

     var group = lstvPositions.GetItemAt(e.X, e.Y); 
     var item = e.Data.GetData(DataFormats.Text).ToString(); 
     lstvPositions.Items.Add(new ListViewItem {Group = group.Group, Text = item}); 

    } 

ich nicht über eine Funktion, die GroupItem geben konnte, so habe ich GetItemAt von denen ich auch Zugriff auf die Listviewgroup gefunden hat.

Aber GetItemAt gibt immer null zurück.

Mache ich etwas falsch? Gibt es einen besseren Weg, dies zu erreichen?

Antwort

2

Zuerst nehme ich an, dass Sie eine ListView, nicht eine ListBox verwenden, da ListBox kein GetItemAt-Mitglied enthält.

private void lstvPositions_DragDrop(object sender, DragEventArgs e) 
{ 
    var localPoint = lstvPositions.PointToClient(new Point(e.X, e.Y)); 
    var group = lstvPositions.GetItemAt(localPoint.X, localPoint.Y); 
    var item = e.Data.GetData(DataFormats.Text).ToString(); 
    lstvPositions.Items.Add(new ListViewItem {Group = group.Group, Text = item}); 
} 
+0

Okay, das funktionierte:

Um Ihr Problem wandeln, den Punkt zu lokalen Koordinaten zu lösen. – Gerbrand