Autor Beitrag
pimpl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Do 06.09.12 15:15 
Guten Tag!

Ich habe eine ListView bei welcher ich die in ihr enthaltenen Elemente entsprechend der Mausbewegung verschieben möchte, wenn die linke Maustaste gehalten wird.
(genauso, wie es beim Windows-Explorer möglich ist). Ich habe jedoch keine Ahnung, wie ich das anstellen soll!

Ich habe daran gedacht die Mausposition in ein Point-Objekt abzuspeichern, wenn ein ListView-Element ausgewählt ist und die linke Maustaste gedrückt ist.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
private Point mausPosition;  //enthält die Absolutkoordinaten der Mausspitze

        /*wird beim Drücken der linken Maustaste ausgelöst*/
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            mausPosition = new Point(-e.X, -e.Y);
        }


Nun weiß ich aber nicht weiter und bin für Anregungen sehr dankbar!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 06.09.12 17:55 
Zitat:
Ich habe daran gedacht die Mausposition in ein Point-Objekt abzuspeichern,


Warum?

Um eine Drag&Drop Operation zu starten solltest du dir dafür vorgesehen Events verdrahten (fangen alle mit Drag... an) . Wie genau und welche hängt davon ab was Start und Ziel der Drag&Drop Operation sein soll. Also von außerhalb in die Anwendung, von der Anwendung nach außerhalb, innerhalb der Anwendung zwischen Controls, innerhalb eines Controls?
pimpl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Fr 07.09.12 14:15 
Das Ziel ist es die Elemente einer ListView innerhalb dieser zu verschieben - also letzlich die Indices der ListView-Elemente in Abhängigkeit der Mausposition zu verändern.
Wird ein Element innerhal der ListView also ganz nach oben gezogen, soll es den Index 0 erhalten, usw.

Habe mal im Internet nach anregungen gesucht, jedoch nichts für mich brauchbares gefunden..
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 07.09.12 17:03 
Hallo pimpl,

bei CodeProject gibt es z.B. zwei Artikel darüber:
Drag and Drop List View
Drag and Drop ListView row reordering
pimpl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Mo 10.09.12 11:50 
Das ist eigentlich genau das, wonach ich suche, jedoch kann ich die beschriebenen Schritte nicht ausführen!

beispielsweise kennt mein VS2010 folgende Befehle nicht:
ausblenden C#-Quelltext
1:
2:
3:
base.DoDragDrop(GetDataForDragDrop(), DragDropEffects.Move);

base.OnItemDrag(e);

u.s.w.

Ich kann die Projektdatei auch nicht öffnen, ohne diese zu konvertieren. Nach der Konvertierung läuft jedoch garnichts.
Gibt es das Projekt auch für die neueren Versionen von VS? Oder wie kann ich das Beispiel nachvollziehen bzw. anwenden?

Moderiert von user profile iconTh69: Quote- durch C#-Tags ersetzt
pimpl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Mi 12.09.12 12:58 
Ich habe es jetzt komplett anders gelöst und es funktioniert.
Dennoch, vielen Dank für die Anregungen!