DataGridViewRowPostPaintEventArgs 类       
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为 RowPostPaint 事件提供数据。
public ref class DataGridViewRowPostPaintEventArgs : EventArgspublic class DataGridViewRowPostPaintEventArgs : EventArgstype DataGridViewRowPostPaintEventArgs = class
    inherit EventArgsPublic Class DataGridViewRowPostPaintEventArgs
Inherits EventArgs- 继承
示例
下面的代码示例演示如何处理 事件, RowPostPaint 使单元格的内容跨越整行。 此代码示例是 How to: Customize the Appearance of Rows in the Windows 窗体 DataGridView 控件中提供的更大示例的一部分。
// 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);
    }
}
' 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
注解
在 RowPostPaint 控件上 DataGridView 绘制行后发生该事件。 RowPostPaint 允许在绘制行中的单元格后手动调整行的外观。 如果要自定义行,这非常有用。
构造函数
属性
| ClipBounds | 获取或设置需要重新绘制的 DataGridView 区域。 | 
| ErrorText | 获取表示当前 DataGridViewRow 的错误消息的字符串。 | 
| Graphics | 获取用于绘制当前 Graphics 的 DataGridViewRow。 | 
| InheritedRowStyle | 获取应用于当前 DataGridViewRow 的单元格样式。 | 
| IsFirstDisplayedRow | 获取或设置一个指示当前行是否为 DataGridView 中显示的第一个行的值。 | 
| IsLastVisibleRow | 获取或设置一个指示当前行是否为 DataGridView 中显示的最后一个可见行的值。 | 
| RowBounds | 获取当前 DataGridViewRow 的边界。 | 
| RowIndex | 获取当前 DataGridViewRow 的索引。 | 
| State | 获取当前 DataGridViewRow 的状态。 | 
方法
| DrawFocus(Rectangle, Boolean) | 围绕指定的边界绘制聚焦框。 | 
| Equals(Object) | 确定指定对象是否等于当前对象。(继承自 Object) | 
| GetHashCode() | 作为默认哈希函数。(继承自 Object) | 
| GetType() | 获取当前实例的 Type。(继承自 Object) | 
| MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) | 
| PaintCells(Rectangle, DataGridViewPaintParts) | 为指定边界中的区域绘制指定的单元格部分。 | 
| PaintCellsBackground(Rectangle, Boolean) | 为指定边界中的区域绘制单元格背景。 | 
| PaintCellsContent(Rectangle) | 为指定边界中的区域绘制单元格内容。 | 
| PaintHeader(Boolean) | 绘制当前 DataGridViewRow 的整个行标头。 | 
| PaintHeader(DataGridViewPaintParts) | 绘制当前行的行标头的指定部分。 | 
| ToString() | 返回表示当前对象的字符串。(继承自 Object) |