DataGridViewRowPostPaintEventArgs Class

Provides data for the RowPostPaint event.

System.Object
  System.EventArgs
    System.Windows.Forms.DataGridViewRowPostPaintEventArgs

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public class DataGridViewRowPostPaintEventArgs : EventArgs

The DataGridViewRowPostPaintEventArgs type exposes the following members.

  NameDescription
Public methodDataGridViewRowPostPaintEventArgsInitializes a new instance of the DataGridViewRowPostPaintEventArgs class.
Top

  NameDescription
Public propertyClipBoundsGets or sets the area of the DataGridView that needs to be repainted.
Public propertyErrorTextGets a string that represents an error message for the current DataGridViewRow.
Public propertyGraphicsGets the Graphics used to paint the current DataGridViewRow.
Public propertyInheritedRowStyleGets the cell style applied to the current DataGridViewRow.
Public propertyIsFirstDisplayedRowGets a value indicating whether the current row is the first row displayed in the DataGridView.
Public propertyIsLastVisibleRowGets a value indicating whether the current row is the last visible row displayed in the DataGridView.
Public propertyRowBoundsGet the bounds of the current DataGridViewRow.
Public propertyRowIndexGets the index of the current DataGridViewRow.
Public propertyStateGets the state of the current DataGridViewRow.
Top

  NameDescription
Public methodDrawFocusDraws the focus rectangle around the specified bounds.
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodPaintCellsPaints the specified cell parts for the area in the specified bounds.
Public methodPaintCellsBackgroundPaints the cell backgrounds for the area in the specified bounds.
Public methodPaintCellsContentPaints the cell contents for the area in the specified bounds.
Public methodPaintHeader(Boolean)Paints the entire row header of the current DataGridViewRow.
Public methodPaintHeader(DataGridViewPaintParts)Paints the specified parts of the row header of the current row.
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Top

The RowPostPaint event occurs after a row is painted on a DataGridView control. RowPostPaint allows you to manually adjust the appearance of the row after the cells in the row are painted. This is useful if you want to customize the row.

The following code example demonstrates how to handle the RowPostPaint event to make the content of a cell span the entire row. 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. 
void dataGridView1_RowPostPaint(object sender,
    DataGridViewRowPostPaintEventArgs e)
{
    // Calculate the bounds of the row.
    Rectangle rowBounds = new Rectangle(
        this.dataGridView1.RowHeadersWidth, e.RowBounds.Top,
        this.dataGridView1.Columns.GetColumnsWidth(
            DataGridViewElementStates.Visible) -
        this.dataGridView1.HorizontalScrollingOffset + 1,
        e.RowBounds.Height);

    SolidBrush forebrush = null;
    try
    {
        // Determine the foreground color. 
        if ((e.State & DataGridViewElementStates.Selected) ==
            DataGridViewElementStates.Selected)
        {
            forebrush = new SolidBrush(e.InheritedRowStyle.SelectionForeColor);
        }
        else
        {
            forebrush = new SolidBrush(e.InheritedRowStyle.ForeColor);
        }

        // Get the content that spans multiple columns. 
        object recipe =
            this.dataGridView1.Rows.SharedRow(e.RowIndex).Cells[2].Value;

        if (recipe != null)
        {
            String text = 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.
            Rectangle textArea = rowBounds;
            textArea.X -= this.dataGridView1.HorizontalScrollingOffset;
            textArea.Width += this.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.
            RectangleF clip = textArea;
            clip.Width -= this.dataGridView1.RowHeadersWidth + 1 - clip.X;
            clip.X = this.dataGridView1.RowHeadersWidth + 1;
            RectangleF oldClip = 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);
        }
    }
    finally
    {
        forebrush.Dispose();
    }

    if (this.dataGridView1.CurrentCellAddress.Y == e.RowIndex)
    {
        // Paint the focus rectangle.
        e.DrawFocus(rowBounds, true);
    }
}

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft