| |
VB.NET - Ein- und UmsteigerDatagridview 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 | |
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. | |
Re: Datagridview Prioritäten Hintergrundfarbe ??? | | | Autor: Tommi467 | Datum: 24.04.19 10:52 |
| Hallo Manfred, vielen Dank für den Tipp, hat mir weitergeholfen. | |
| 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 |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere Infos
|
|
|
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
|
|