vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Ein- und Umsteiger
Datagridview Prioritäten Hintergrundfarbe ??? 
Autor: Tommi467
Datum: 11.04.19 09:46

Hallo zusammen,

Ich habe ein Datagridview in dem Daten eingetragen sind
und in dem Zellen eines Felder nach ihrer Wertigkeit farblich markiert werden.

In einer zweiten Überprüfung sollen ganze Datensätze(Rows) farblich gekennzeichnet werden, wenn bestimmt Bedingungen erfüllt sind.

Wurden aber zuvor eine Zelle dieser Zeile bereits farblich markiert, behält sie diese Farbe auch
dann bei, wenn die ganze Zeile eingefärbt werden soll.

Kann ich dieses verhalten abstellen bzw. umstellen?
Wenn ich die ganze Zeile einfärbe sollen wirklich alle Zellen diese Farbe erhalten.

Schon einmal vielen Dank für eure Hilfe
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datagridview Prioritäten Hintergrundfarbe ??? 
Autor: Manfred X
Datum: 11.04.19 11:43

Hallo!

Was genau Du machen willst und wie Du das einstellst, weiß ich nicht.
Im Grid gibt es eine klare Hierarchie der Färbung von Spalten, Zeilen und Zellen.
Wenn Du gegen diese vorgegebene Hierarchie "arbeitest", kann man das
z.B. im CellPainting-Event erledigen.

Irgend so was .... (Windows.Forms.Form)
Public Class frmGridColor
 
    Dim dt As New DataTable
 
    Dim bs As New BindingSource With {.DataSource = dt}
 
    Dim WithEvents dgv As New DataGridView With
        {.Parent = Me, .Dock = DockStyle.Fill, .DataSource = bs}
 
 
    Private Sub frmGridColor_Load(sender As Object, 
        e As EventArgs) Handles MyBase.Load
 
        'Testdaten erstellen
        dt.Columns.Add("Warnung", GetType(Boolean))
        dt.Columns.Add("Wert", GetType(Double))
 
        Dim rndm As New Random(54321)
        For i As Integer = 1 To 100
            If rndm.NextDouble > 0.95 Then
                dt.Rows.Add(DBNull.Value, DBNull.Value)
            Else
                dt.Rows.Add 
                 (If(rndm.NextDouble > 0.8, True, False), rndm.NextDouble)
            End If
        Next i
 
        bs.DataSource = dt
    End Sub
 
 
    Private Sub dgv_CellPainting(sender As Object,
        e As DataGridViewCellPaintingEventArgs) Handles dgv.CellPainting
 
        If e.ColumnIndex >= 0 And e.RowIndex >= 0 Then
 
            Dim row_warn As Color = Color.LightPink
            Dim cell_warn As Color = Color.LightGreen
            Dim normal As Color = Color.White
 
            Dim row As DataGridViewRow = dgv.Rows(e.RowIndex)
            Dim cell As DataGridViewCell = row.Cells(e.ColumnIndex)
            Dim value As Object = cell.Value
 
            If e.ColumnIndex = 0 Then
                'Spalte, deren Wert die Zeile warnend einfärbt  
                Dim bl As Boolean
                If value IsNot Nothing _
                    AndAlso Boolean.TryParse(cell.Value.ToString, bl) _
                    AndAlso bl Then
                    row.DefaultCellStyle.BackColor = row_warn
                Else
                    row.DefaultCellStyle.BackColor = normal
                End If
            End If
 
            If e.ColumnIndex = 1 Then
                'Spalte deren Wert die Zelle warnend einfärbt, wenn 
                'die Zeile nicht zuvor bereits warnend gefärbt worden ist 
                If row.DefaultCellStyle.BackColor = normal Then
                    Dim vl As Double
                    If value IsNot Nothing _
                    AndAlso Double.TryParse(value.ToString, vl) Then
                        If vl > 0.8 Then
                            cell.Style.BackColor = cell_warn
                        Else
                            cell.Style.BackColor = normal
                        End If
                    End If
                Else
                    cell.Style.BackColor = row_warn
                End If
            End If
        End If
    End Sub
 
 
    Private Sub dgv_DataError(sender As Object, 
        e As DataGridViewDataErrorEventArgs) Handles dgv.DataError
 
        MsgBox(e.Exception.ToString)
        e.Cancel = True
    End Sub
 
    Private Sub dgv_CellValueChanged(sender As Object, 
        e As DataGridViewCellEventArgs) Handles dgv.CellValueChanged
 
        dgv.InvalidateRow(e.RowIndex)
 
    End Sub
End Class
Im Beispiel muß die Zeilenwarnspalte vor der Zellwarnspalte stehen (Index).

Beitrag wurde zuletzt am 11.04.19 um 12:07:35 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datagridview Prioritäten Hintergrundfarbe ??? 
Autor: Tommi467
Datum: 24.04.19 10:52

Hallo Manfred, vielen Dank für den Tipp, hat mir weitergeholfen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-2024 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