2016-04-29 12 views
4

Ich habe eine ListView mit DragDrop-Funktion. Ich möchte, dass das gezogene Objekt nach dem DragDrop ausgewählt bleibt.Wie kann das fokussierte Element in einem ListView während eines DragDrop-Ereignisses geändert werden?

Ich habe diesen Code (für den Drag & Drop-)

private void commandListView_DragDrop(object sender, DragEventArgs e) 
{ 
    Point point = commandListView.PointToClient(new Point(e.X, e.Y)); 
    int index = 0; 

    try 
    { 
     index = commandListView.GetItemAt(point.X, point.Y).Index; 
    } 
    catch (Exception) 
    { 
    } 

    if (index < 0) 
    { 
     index = commandListView.Items.Count - 1; 
    } 

    ListViewItem data = e.Data.GetData(typeof(ListViewItem)) as ListViewItem; 
    commandListView.Items.Remove(data); 
    commandListView.Items.Insert(index, data); 
} 

und ich versuchte, das diese zu verwenden, um das Element erneut zu wählen, aber es funktioniert nicht

data.Selected = true; 
data.Focused = true; 

Dann ich, wenn ich zu sehen, getestet könnte auf den ersten Artikel in der ListView

konzentrieren, aber es funktioniert auch nicht, das ausgewählte Element nicht c hange. es ist immer der alte Index, in dem sich der gezogene Gegenstand vor dem Dragdrop befand.

PS. Ich bin mit WinForms

@Update

Ich habe bereits versucht

commandListView.Focus(); 

zu verwenden, aber es hat nicht

Nur um zu klären das dragdrop geschieht in der gleichen Listview gearbeitet, i Ziehen Sie Elemente, um ihre Reihenfolge zu ändern.

+0

Seitennotiz: 'catch (Exception) {}' (ignoriert alle ausgelösten Ausnahmen) sollte nie verwendet werden –

+0

Ich bin mir nicht sicher, aber vielleicht kann Ihnen das helfen: http://stackoverflow.com/questions/11745028/set-item-focus-in-listview-wpf – Snelfie

+0

'commandListView.Focus();' Sie müssen das Steuerelement selbst nach dem Fokuselement fokussieren. –

Antwort

1

Ich fand eine Lösung; Ich benutzte das MouseDown-Ereignis, um die DragDrop-Operation zu starten.

Jetzt benutze ich das ItemDrag-Ereignis und alles funktioniert gut, eigentlich brauche ich nicht einmal den Gegenstand zu fokussieren, es wird automatisch gemacht.

Verwandte Themen