| |

VB.NET - Ein- und UmsteigerRe: 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. |  |
 | 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 |
  |
|
Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|