vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Controls · DataGrid & DataGridView   |   VB-Versionen: VB201012.09.11
DataGridView- individuelle Hintergrundgestaltung für RowHeader

Eine Funktion, die eine Möglichkeit für das individuelle Gestalten des Hintergrundes der RowHeader-Zellen im DataGridView-Control realisiert.

Autor:   Dietrich HerrmannBewertung:  Views:  10.817 
ohne HomepageSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Dieser Tipp geht im Grundprinzip von der Vorgehensweise im Tipp für die  Hintergrundgestaltung der ColumnHeader-Zellen aus. Die Funktion RowHeadersBG wird ebenfalls im CellPainting-Ereignis des DatagridView angewendet.

Die Grundidee ist die Darstellung eines plastischen ('buttonartigen') Hintergrunds.
Hierzu benötigt man zunächst die Definition für die Farbverläufe:

Imports System.Drawing.Drawing2D
...
' Definieren der Farben für die RowHeader-Zelle
Public colorBlendDGV As New ColorBlend

Und bspw. dann konkret:

Private Sub Form1_Load(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles MyBase.Load
 
  ' ColorBlend für ColumnHeaders der DatagridViews festlegen
  With colorBlendDGV
    .Colors = New Color() _
     {Color.WhiteSmoke, Color.LightBlue, Color.LightBlue, Color.Gray}
    .Positions = New Single() {0.0, 0.22, 0.78, 1.0}
  End With
End Sub

(Man kann natürlich dieselbe Colordefinition benutzen, die man bei der eventuellen Anwendung der Gestaltung für die ColumnHeaders definiert hat.)

Die Funktion:

'' <summary>
''' Gradient als Hintergrund für RowHeaders
''' </summary>
''' <param name="theDGV">das DataGridView</param>
''' <param name="e">DataGridViewCellPaintingEventArgs</param>
''' <param name="colorBlend">Feld für die Gradientfarben</param>
''' <param name="angle">der Winkel für Gradient (90: horizontal)</param>
''' <param name="borderColor">die Farbe des Randes</param>
''' <remarks >im Cellpaint-Ereignis des DatagridView anwenden!</remarks>
Public Sub RowHeadersBG(ByVal theDGV As DataGridView, _
  ByVal e As DataGridViewCellPaintingEventArgs, _
  ByVal colorBlend As ColorBlend, _
  Optional ByVal angle As Single = 90, _
  Optional ByVal borderColor As Color = Nothing)
 
  With e
    ' nur für Zeilen-Header ausführen
    If .ColumnIndex > 0 Then Exit Sub
    If theDGV.AllowUserToAddRows And .RowIndex = theDGV.RowCount - 1 Then Exit Sub
 
    ' das Rechteck der Zelle
    Dim rect As New Rectangle(.CellBounds.Left, .CellBounds.Top, _
      .CellBounds.Width, .CellBounds.Height)
 
    ' den Brush initialisieren
    Dim cellBrush As New LinearGradientBrush(rect, Color.Red, Color.Blue, angle)
    cellBrush.GammaCorrection = True
    cellBrush.InterpolationColors = colorBlend  ' die Hintergrund-Farben definieren 
    .Graphics.FillRectangle(cellBrush, .CellBounds)
 
    ' den Rand der Zelle zeichnen
    Dim borderPen As New Pen(borderColor)
    If Not IsNothing(borderColor) Then
      Dim recBorder As New Rectangle(.CellBounds.X - 1, .CellBounds.Y, _
        .CellBounds.Width, .CellBounds.Height - 1)
      .Graphics.DrawRectangle(borderPen, recBorder)
    End If
 
    .Handled = True
    cellBrush.Dispose()
    borderPen.Dispose()
  End With
End Sub

Und hier die Anwendung der Funktion im CellPaint-Ereignis des DGV:

Private Sub DataGridView1_CellPainting(ByVal sender As Object, _
  ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) _
  Handles DataGridView1.CellPainting
 
  RowHeadersBG(DatagridView1, e, colorBlendDGV)
End Sub



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle 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.