vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 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: 24.07.14 14:10

Um bei Datenbindung zu sortieren, muß in der Datenklasse
die entsprechende Schnittstelle implementiert sein (siehe oben).

Bei einem gebundenen Control steuern die Daten das Control.
Wenn für bestimmte Sätze spezielle Farben oder Zellgrößen gelten sollen,
gehören diese Angaben in die Daten.
Public Class frmDGVSwap2
 
    'Datenklasse mit Vergleichs-Schnittstelle für Sortieren
    Private Class data
        Public Property Daten As String
        Public Property ForeColor As Color
        Public Property RowHeight As Integer
    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
        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 " & CStr(i), _
                                   .ForeColor = c, .RowHeight = h})
        Next i
 
        'Datenbindung
        bs.DataSource = lst
 
        dgv.AllowUserToAddRows = False
 
    End Sub
 
 
    Dim swapindex As Integer = -1
 
    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)
 
        'Die Gridspalte entsprechend den Angaben im Datensatz einrichten
        With dgv.Rows(e.RowIndex)
            .Cells(e.ColumnIndex).Style.ForeColor = dt.ForeColor
            .Height = dt.RowHeight
        End With
 
    End Sub
 
 
    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
                'Zeile neu zeichnen lassen
                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 / Markierfarbe
                swapindex = e.RowIndex
                dgv.Rows(swapindex).DefaultCellStyle.BackColor = _
                  Color.LightGreen
            ElseIf swapindex = e.RowIndex Then
                'Aufheben der Markierung 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)
 
                'getauschte Zeilen neu zeichnen lassen
                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.886Legend_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.635Manfred X23.07.14 18:15
Re: EINFACHES Beispiel für Item-Positionstausch bei einer Li...7.473Legend_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.738Legend_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.600Manfred 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.489Legend_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