Anordnen / verschieben / Drag & Drop-ListViewItems in der gleichen ListView-Steuerelement in C# - Windows Forms
Ich habe eine ListView in LargeIcon Anzeigen in C# 2008-System-Windows-Forms -.
Nun würde ich gerne so verschieben Sie ein Element der ListView in der gleichen ListView auf eine andere position - nennen wir es "drag-und-drop" oder ein "item anordnen" oder was auch immer. VB 6 ist dazu in der Lage und wird dadurch automatisch in jeder listView.
C# scheint nicht über diese Funktion verfügen oder es musste codiert werden, ersten. Für die Codierung habe ich keine Erfahrung und ich finde keine Antwort bei meiner recherche im internet. Ich fand nur ein "override-Verfahren", die nicht funktionierte.
Ich brauche keine andere ListView-Steuerelemente (wie ObjectListView oder was auch immer) und ich brauche nicht überschreiben Verfahren oder crafting eine neue ListView-Steuerelement. Ich möchte zu handhaben, es in das ListView-Steuerelement von Microsoft gegeben, wie es ist. Irgendwelche Ideen auf, diese. Code wäre sehr geschätzt, glaube ich
Ich kann es nicht auf meinen eigenen, es sei denn, es ist eine sehr simple one-liner.
PS: Wenn das Element muss verschoben werden, ich brauche alle Eigenschaften des Elements verschoben werden (text, tag, imagekey -, hintergrund-Farbe, Vordergrund-Farbe, name, tooltiptext etc.). Ich habe keine Ahnung, wie dies erreicht werden kann.
Ein Hinweis auf diese die ich gefunden habe: Es existiert ein Element entfernen (genannt .Entfernen()) und einfügen genannt .Legen Sie(). Aber mit dieser information kann ich noch nicht machen, das "verschieben" von Elementen erfolgt mit der Maus.
Ich denke, dass alle DragEvents der listView eine Rolle spielen, aber ich weiß nich wie man Sie benutzt und wie man kopieren Sie die ausgewählten Elemente (listView1.SelectedItems), um die richtige position und die Notwendigkeit der Gewinnung dieser position zuerst.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Tat die Funktion, die Sie sprechen, ist nicht unterstützt, Winforms nicht C#. C# hat nichts zu tun mit einer solchen Funktion; es ist eine UI-Technologie verfügen über keine Sprache verfügen. Jedoch, um dieses Problem zu lösen, haben wir wenig code hier. Es unterstützt die
Position
- Eigenschaft für jedesListViewItem
zu verwenden, für diesen Zweck (inLargeIcon
Ansicht). Eine weitere wichtige Eigenschaft istAutoArrange
, diese sollten gesetzt werden, umfalse
zu ermöglichen, diePosition
wirksam werden. Hier ist der code:HINWEIS: wie Sie sehen können, lasse ich 2 kommentierte code-Zeilen
listView1.AutoArrange
es, wenn Sie wollenreorder
anstelle der änderung desListViewItem
position Sie können die Auskommentierung dieser Zeilen. Ich kann feststellen, dass einige flimmern hier (das ist normal, wenn Sie sich mit einer winforms-ListView), so verwenden Sie diesen code (kann gesetzt werden in der form-Konstruktor) zu aktivierenDoubleBuffered
:listView1.AutoArrange
. Nach dem loslassen der Maustaste, wird der ListView kann auto-ordnen Sie die Elemente basierend auf der neuen position des Drag-n-Drop-Element. Es kann auch die Reihenfolge der internen ListViewItemCollection (ich bin mir nicht so sicher, weil, wie ich sagte, es ist eine lange Zeit, ich habe nicht gearbeitet mit winforms, aber Sie sollten es selbst probieren).können wir den folgenden code ein, um den bestellten Artikel der position