vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Liste 
Autor: Manfred X
Datum: 23.07.14 18:15

Die Satzposition gehört in die Datenklasse!

Public Class frmDGVSwap
 
    'Datenklasse mit Vergleichs-Schnittstelle für Sortieren
    Private Class data
        Implements IComparable(Of data)
        Public Property Daten As String
        Public Property satzposition As Integer
 
        Public Function CompareTo(other As data) As Integer _
            Implements System.IComparable(Of data).CompareTo
 
            If Me.satzposition < other.satzposition Then Return -1
            If Me.satzposition = other.satzposition Then Return 0
            Return 1
        End Function
    End Class
 
 
    'Liste, Bindung und Control
    Dim lst As New List(Of data)
    Dim bs As New BindingSource With {.RaiseListChangedEvents = True}
 
    Dim WithEvents dgv As New DataGridView With {.Parent = Me, .DataSource = bs}
 
 
    Private Sub frmDGVSwap_Load(sender As System.Object, e As System.EventArgs) _
      Handles MyBase.Load
 
        'Testdaten
        For i As Integer = 0 To 99
            lst.Add(New data With {.Daten = "Satz " & CStr(i), .satzposition = _
              i})
        Next i
 
        'Datenbindung
        bs.DataSource = lst
 
        dgv.AllowUserToAddRows = False
    End Sub
 
 
    Dim swapindex As Integer = -1
 
 
    Private Sub dgv_RowHeaderMouseClick(sender As Object, _
             e As System.Windows.Forms.DataGridViewCellMouseEventArgs) _
        Handles dgv.RowHeaderMouseClick
 
        'Rechtsclick auf den Rowheader markiert ein Item für den 
        ' Positions-Tausch
        'Rechtsclick auf ein weiteres Item führt den Tausch durch
        'Rechtsclick auf markiertes Item hebt Markierung auf
 
        If e.RowIndex = -1 Then
           If not swapindex = -1 Then 
              dgv.Rows(swapindex).DefaultCellStyle.BackColor = Color.White
              swapindex = -1        
           End If 
           Exit Sub
        end if
 
        If e.Button = MouseButtons.Right Then
            If swapindex = -1 Then
                'Erster Click Index merken
                swapindex = e.RowIndex
                dgv.Rows(swapindex).DefaultCellStyle.BackColor = _
                Color.LightGreen
            ElseIf swapindex = e.RowIndex Then
                'Aufheben bei erneutem Click
                dgv.Rows(swapindex).DefaultCellStyle.BackColor = Color.White
                swapindex = -1
            Else
                Dim dt1 As data = CType(bs(e.RowIndex), data)
                Dim dt2 As data = CType(bs(swapindex), data)
 
                dgv.Rows(swapindex).DefaultCellStyle.BackColor = Color.White
                swapindex = -1
 
                'Satzpositionen tauschen
                Dim pos2 As Integer = dt2.satzposition
                dt2.satzposition = dt1.satzposition
                dt1.satzposition = pos2
 
                'Listenelemente nach Tausch neu sortieren
                lst.Sort()
            End If
        End If
    End Sub
End Class


Beitrag wurde zuletzt am 23.07.14 um 18:38:16 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
DataGridView und BindingSource...8.887Legend_X19.07.14 17:24
Re: DataGridView und BindingSource...7.672effeff19.07.14 18:38
Re: DataGridView und BindingSource...7.600ErfinderDesRades19.07.14 20:03
EINFACHES Beispiel (Bindinglist)7.641Manfred X20.07.14 04:53
Re: EINFACHES Beispiel (Bindinglist)7.973Legend_X20.07.14 12:42
Re: EINFACHES Beispiel (Bindinglist)7.619Manfred X20.07.14 13:42
Re: EINFACHES Beispiel (Bindinglist)7.607Legend_X20.07.14 18:05
Re: EINFACHES Beispiel (Bindinglist)7.720ErfinderDesRades20.07.14 18:13
Re: EINFACHES Beispiel (Bindinglist)7.676Manfred X20.07.14 20:04
Re: EINFACHES Beispiel (Bindinglist)7.774Legend_X23.07.14 04:09
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.636Manfred X23.07.14 18:15
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.474Legend_X23.07.14 20:36
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.532Manfred X23.07.14 21:01
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.503Legend_X23.07.14 21:29
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.681Manfred X23.07.14 22:07
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.739Legend_X23.07.14 22:37
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.655Manfred X23.07.14 22:48
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.504Legend_X23.07.14 23:30
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.601Manfred X24.07.14 00:01
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.601Legend_X24.07.14 04:10
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.618Manfred X24.07.14 14:10
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.490Legend_X24.07.14 15:06
EINFACHES Beispiel für sortierbare Datenklasse8.039Manfred X24.07.14 16:20

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel