vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 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
EINFACHES Beispiel für sortierbare Datenklasse 
Autor: Manfred X
Datum: 24.07.14 16:20

Public Class frmDGVSwap3
 
    Private Class data
 
        Public Property Daten As String
        Public Property Numeric As Decimal
 
        Public Property RowPos As Integer
        Public Property ForeColor As Color
        Public Property RowHeight As Integer
 
    End Class
 
 
    Private Class rowcomparer
        Implements Collections.Generic.IComparer(Of data)
 
        Private _sortindex As Integer
 
        Public Property sortindex As Integer
            Get
                Return _sortindex
            End Get
            Set(value As Integer)
                _sortindex = value
            End Set
        End Property
 
 
        Public Function Compare(x As data, y As data) As Integer _
            Implements System.Collections.Generic.IComparer(Of data).Compare
 
            'Vergleich von zwei Data-Instanzen gemäß der gegebenen Spalte
 
            Dim o As Integer = 1
            If _sortindex = 0 Then
                If x.Daten < y.Daten Then o = -1
                If x.Daten = y.Daten Then o = 0
            ElseIf _sortindex = 1 Then
                If x.Numeric < y.Numeric Then o = -1
                If x.Numeric = y.Numeric Then o = 0
            Else
                'sonst stets nach RowPos sortieren
                If x.RowPos < y.RowPos Then o = -1
                If x.RowPos = y.RowPos Then o = 0
            End If
 
            Return o
 
        End Function
    End Class
 
 
    'Liste, Bindung und Control
    Dim lst As New List(Of data)
    Dim bs As new BindingSource 
 
    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
        Dim c As Color, h As Integer
        For i As Integer = 0 To 99
            If i Mod 3 = 0 Then c = Color.Red : h = 20
            If i Mod 3 = 1 Then c = Color.Blue : h = 25
            If i Mod 3 = 2 Then c = Color.Magenta : h = 30
            lst.Add(New data With {.Daten = "Satz " & Format(i, "00"), _
                                   .Numeric = CDec(Math.Round(Rnd() * 100, 2)), _
                                   .RowPos = i, _
                                   .ForeColor = c, .RowHeight = h})
        Next i
 
        bs.DataSource = lst
 
    End Sub
 
 
 
    Private Sub dgv_CellPainting(sender As Object, _
        e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) _
        Handles dgv.CellPainting
 
        If e.RowIndex = -1 Or e.ColumnIndex = -1 Then Exit Sub
 
        Dim dt As data = DirectCast(bs(e.RowIndex), data)
        With dgv.Rows(e.RowIndex)
            .Cells(e.ColumnIndex).Style.ForeColor = dt.ForeColor
            .Height = dt.RowHeight
        End With
 
    End Sub
 
 
    Private Sub dgv_ColumnHeaderMouseClick(sender As Object, _
        e As System.Windows.Forms.DataGridViewCellMouseEventArgs) _
        Handles dgv.ColumnHeaderMouseClick
 
        If e.ColumnIndex = -1 Then Exit Sub
 
        'Instanz des Comparers
        Dim rc As New rowcomparer
 
        'Festlegen der Spalte fürs Sortieren 
        rc.sortindex = e.ColumnIndex
 
        lst.Sort(rc)
 
        'Bindung aktualisieren
        bs.ResetBindings(False)
    End Sub
 
 
    Dim swapindex As Integer = -1
 
    Private Sub dgv_RowHeaderMouseClick(sender As Object, _
           e As System.Windows.Forms.DataGridViewCellMouseEventArgs) _
           Handles dgv.RowHeaderMouseClick
 
        If e.RowIndex = -1 Then
            If Not swapindex = -1 Then
                dgv.InvalidateRow(swapindex)
                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.InvalidateRow(swapindex)
                swapindex = -1
            Else
                'Referenzen auf Datensätze besorgen
                Dim dt1 As data = CType(bs(e.RowIndex), data)
                Dim dt2 As data = CType(bs(swapindex), data)
 
                bs.RemoveAt(e.RowIndex)
                bs.Insert(e.RowIndex, dt2)
 
                bs.RemoveAt(swapindex)
                bs.Insert(swapindex, dt1)
 
                dgv.InvalidateRow(swapindex)
                dgv.InvalidateRow(e.RowIndex)
 
                swapindex = -1
            End If
        End If
    End Sub
 
End Class
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.656Manfred X23.07.14 22:48
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.505Legend_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.040Manfred 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