DataGridViewRowPostPaintEventArgs Класс

Определение

Предоставляет данные для события RowPostPaint.Provides data for the RowPostPaint event.

public ref class DataGridViewRowPostPaintEventArgs : EventArgs
public class DataGridViewRowPostPaintEventArgs : EventArgs
type DataGridViewRowPostPaintEventArgs = class
    inherit EventArgs
Public Class DataGridViewRowPostPaintEventArgs
Inherits EventArgs
Наследование
DataGridViewRowPostPaintEventArgs

Примеры

В следующем примере кода показано, как выполнить обработку RowPostPaint события, чтобы содержимое ячейки занимало всю строку.The following code example demonstrates how to handle the RowPostPaint event to make the content of a cell span the entire row. Этот пример кода является частью более крупного примера, приведенного в разделе как: Настройка внешнего вида строк в элементе управленияWindows Forms DataGridView.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);
    }
}
' 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 на элементе управления.The RowPostPaint event occurs after a row is painted on a DataGridView control. RowPostPaintпозволяет вручную настроить внешний вид строки после рисования ячеек в строке.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.

Конструкторы

DataGridViewRowPostPaintEventArgs(DataGridView, Graphics, Rectangle, Rectangle, Int32, DataGridViewElementStates, String, DataGridViewCellStyle, Boolean, Boolean)

Инициализирует новый экземпляр класса DataGridViewRowPostPaintEventArgs.Initializes a new instance of the DataGridViewRowPostPaintEventArgs class.

Свойства

ClipBounds

Получает или задает область объекта DataGridView, который должен быть повторно закрашен.Gets or sets the area of the DataGridView that needs to be repainted.

ErrorText

Получает строковое значение, которое представляет сообщение об ошибке для текущей ячейки DataGridViewRow.Gets a string that represents an error message for the current DataGridViewRow.

Graphics

Получает объект Graphics, используемый для закрашивания текущей ячейки DataGridViewRow.Gets the Graphics used to paint the current DataGridViewRow.

InheritedRowStyle

Получает стиль ячейки, примененный к текущей строке DataGridViewRow.Gets the cell style applied to the current DataGridViewRow.

IsFirstDisplayedRow

Получает значение, указывающее, является ли текущая строка первой строкой, отображаемой в DataGridView.Gets a value indicating whether the current row is the first row displayed in the DataGridView.

IsLastVisibleRow

Получает значение, указывающее, является ли текущая строка последней видимой строкой в объекте DataGridView.Gets a value indicating whether the current row is the last visible row displayed in the DataGridView.

RowBounds

Получает границы текущей ячейки DataGridViewRow.Get the bounds of the current DataGridViewRow.

RowIndex

Получает индекс текущего объекта DataGridViewRow.Gets the index of the current DataGridViewRow.

State

Получает состояние текущей ячейки DataGridViewRow.Gets the state of the current DataGridViewRow.

Методы

DrawFocus(Rectangle, Boolean)

Отрисовывает прямоугольник фокуса вокруг указанных границ.Draws the focus rectangle around the specified bounds.

Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
PaintCells(Rectangle, DataGridViewPaintParts)

Закрашивает указанные части ячейки для области в заданных границах.Paints the specified cell parts for the area in the specified bounds.

PaintCellsBackground(Rectangle, Boolean)

Закрашивает фон ячейки для области в заданных границах.Paints the cell backgrounds for the area in the specified bounds.

PaintCellsContent(Rectangle)

Закрашивает содержимое ячейки для области в заданных границах.Paints the cell contents for the area in the specified bounds.

PaintHeader(Boolean)

Закрашивает весь заголовок текущей строки DataGridViewRow.Paints the entire row header of the current DataGridViewRow.

PaintHeader(DataGridViewPaintParts)

Закрашивает указанные части заголовка текущей строки.Paints the specified parts of the row header of the current row.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Применяется к

Дополнительно