Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

DataGridView.RowPostPaint-Ereignis

Hinweis: Dieses Ereignis ist neu in .NET Framework, Version 2.0.

Tritt ein, nachdem ein DataGridViewRow gezeichnet wurde.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

public event DataGridViewRowPostPaintEventHandler RowPostPaint
/** @event */
public void add_RowPostPaint (DataGridViewRowPostPaintEventHandler value)

/** @event */
public void remove_RowPostPaint (DataGridViewRowPostPaintEventHandler value)

JScript unterstützt die Verwendung von Ereignissen, aber nicht die Deklaration von neuen Ereignissen.

Sie können dieses Ereignis einzeln oder zusammen mit dem RowPrePaint-Ereignis behandeln, um die Darstellung von Zeilen im Steuerelement anzupassen. Sie können gesamte Zeilen oder nur bestimmte Teile von Zeilen selbst zeichnen und die anderen Teile mit den folgenden Methoden der DataGridViewRowPostPaintEventArgs-Klasse zeichnen.

Sie können auch die VisualStyleRenderer-Klasse zum Zeichnen von Standardsteuerelementen mit dem aktuellen Design verwenden. Weitere Informationen finden Sie unter Rendering von Steuerelementen mit visuellen Stilen. Wenn Sie Visual Studio 2005 verwenden, haben Sie außerdem Zugriff auf eine umfassende Bibliothek der Standardbilder, die Sie mit dem DataGridView-Steuerelement verwenden können.

Visual Studio 2005 Bildbibliothek
Visual Studio 2008 Bildbibliothek
Visual Studio Bildbibliothek

Weitere Informationen zum Behandeln von Ereignissen finden Sie unter Behandeln von Ereignissen.

Im folgenden Codebeispiel wird das Verwenden eines Handlers für das RowPostPaint-Ereignis veranschaulicht, um den Textinhalt zu zeichnen, der die gesamte Zeile unter den normalen Zellwerten umfasst. Dieses Beispiel ist Teil eines umfangreicheren Beispiels in Gewusst wie: Anpassen der Darstellung von Zeilen im DataGridView-Steuerelement in Windows Forms.

// 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);
    }
}

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0
Anzeigen: