Fireplace

DataGridView Rows per Drag&Drop umseortiern

Registriert
Mai 2007
Beiträge
150
[C#] DataGridView Rows per Drag&Drop umseortiern

Hallo,

Ich arbeite gerade an einer Möglichkeit, die Zeilen eines DataGridView in C# umzusortieren.
Ich habe auch kein Problem damit, herauszufinden auf welche andere Zeile, die zu verschiebende Zeile gezogen wurde. Allerdings möchte ich auch herausfinden, auf welcher Höhe die Zeile "getroffen" wurde.

Der Hintergrund (s. Anhang):
Wenn man die Blau markiere Zeile auf den grünen Bereich gezogen wird, soll die Zeile vor Zeile 1 eingefügt werden. Wenn man sie auf den Roten Bereich zieht, soll sie zwischen Zeile 1 und 2 eingefügt werden. Wenn man sie auf den Pinken Bereich zieht, soll es nach Zeile 17 eingefügt werden, usw.

Wie kann ich herausfinden, auf welcher Höhe die Zeile "getroffen" wurde?

lg Stefan
 

Anhänge

  • screenshot.png
    screenshot.png
    77,1 KB · Aufrufe: 173
Zuletzt bearbeitet:
ah ok...dann hilft die das natürlich nicht weiter und mit C# kann ich leider nicht dienen!:rolleyes:
 
Code:
Dim clientPoint As Point = Me.PointToClient(New Point(e.X, e.Y))
Dim hit As DataGridView.HitTestInfo = Me.HitTest(clientPoint.X, clientPoint.Y)

If clientPoint.Y - hit.RowY < Me.Rows.GetRowsHeight(DataGridViewElementStates.Selected) / 2 Then
     Console.WriteLine("top of row")
Else
     Console.WriteLine("bottom of row")
End If

Das fügst du im DragDrop Event der DataGridView hinzu. Über hit.RowIndex und die oben erlangte Info kannst du dann an den entsprechenden Index verschieben. Außerdem solltest du einen BindingManager verwenden, sonst passt nach dem Verschieben der Index nicht mehr zur Datenquelle.
 
Zurück
Oben