DataGridViewRowPostPaintEventHandler Delegate
Represents the method that will handle the RowPostPaint event of a DataGridView.
Assembly: System.Windows.Forms (in System.Windows.Forms.dll)
'Declaration Public Delegate Sub DataGridViewRowPostPaintEventHandler ( _ sender As Object, _ e As DataGridViewRowPostPaintEventArgs _ ) 'Usage Dim instance As New DataGridViewRowPostPaintEventHandler(AddressOf HandlerMethod)
Parameters
- sender
- Type: System.Object
The source of the event.
- e
- Type: System.Windows.Forms.DataGridViewRowPostPaintEventArgs
A DataGridViewRowPostPaintEventArgs that contains the event data.
When you create a DataGridViewRowPostPaintEventHandler delegate, you identify the method that will handle the event. To associate the event with your event handler, add an instance of the delegate to the event. The event handler is called whenever the event occurs, unless you remove the delegate. For more information about event-handler delegates, see Events and Delegates.
The following code example presents a DataGridViewRowPostPaintEventHandler delegate that paints textual content that spans the entire row below the normal cell values. This code example is part of a larger example provided in How to: Customize the Appearance of Rows in the Windows Forms DataGridView Control.
' Paints the content that spans multiple columns and the focus rectangle. Sub dataGridView1_RowPostPaint(ByVal sender As Object, _ ByVal e As DataGridViewRowPostPaintEventArgs) _ Handles dataGridView1.RowPostPaint ' Calculate the bounds of the row. Dim rowBounds As New Rectangle(Me.dataGridView1.RowHeadersWidth, _ e.RowBounds.Top, Me.dataGridView1.Columns.GetColumnsWidth( _ DataGridViewElementStates.Visible) - _ Me.dataGridView1.HorizontalScrollingOffset + 1, e.RowBounds.Height) Dim forebrush As SolidBrush = Nothing Try ' Determine the foreground color. If (e.State And DataGridViewElementStates.Selected) = _ DataGridViewElementStates.Selected Then forebrush = New SolidBrush(e.InheritedRowStyle.SelectionForeColor) Else forebrush = New SolidBrush(e.InheritedRowStyle.ForeColor) End If ' Get the content that spans multiple columns. Dim recipe As Object = _ Me.dataGridView1.Rows.SharedRow(e.RowIndex).Cells(2).Value If (recipe IsNot Nothing) Then Dim text As String = recipe.ToString() ' Calculate the bounds for the content that spans multiple ' columns, adjusting for the horizontal scrolling position ' and the current row height, and displaying only whole ' lines of text. Dim textArea As Rectangle = rowBounds textArea.X -= Me.dataGridView1.HorizontalScrollingOffset textArea.Width += Me.dataGridView1.HorizontalScrollingOffset textArea.Y += rowBounds.Height - e.InheritedRowStyle.Padding.Bottom textArea.Height -= rowBounds.Height - e.InheritedRowStyle.Padding.Bottom textArea.Height = (textArea.Height \ e.InheritedRowStyle.Font.Height) * _ e.InheritedRowStyle.Font.Height ' Calculate the portion of the text area that needs painting. Dim clip As RectangleF = textArea clip.Width -= Me.dataGridView1.RowHeadersWidth + 1 - clip.X clip.X = Me.dataGridView1.RowHeadersWidth + 1 Dim oldClip As RectangleF = e.Graphics.ClipBounds e.Graphics.SetClip(clip) ' Draw the content that spans multiple columns. e.Graphics.DrawString(text, e.InheritedRowStyle.Font, forebrush, _ textArea) e.Graphics.SetClip(oldClip) End If Finally forebrush.Dispose() End Try If Me.dataGridView1.CurrentCellAddress.Y = e.RowIndex Then ' Paint the focus rectangle. e.DrawFocus(rowBounds, True) End If End Sub 'dataGridView1_RowPostPaint
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.