DataGridView.RowPrePaint DataGridView.RowPrePaint DataGridView.RowPrePaint DataGridView.RowPrePaint Event


DataGridViewRow が塗りつぶされる前に発生します。Occurs before a DataGridViewRow is painted

 event System::Windows::Forms::DataGridViewRowPrePaintEventHandler ^ RowPrePaint;
public event System.Windows.Forms.DataGridViewRowPrePaintEventHandler RowPrePaint;
member this.RowPrePaint : System.Windows.Forms.DataGridViewRowPrePaintEventHandler 
Public Custom Event RowPrePaint As DataGridViewRowPrePaintEventHandler 

次のコード例は、 RowPrePaintイベントのハンドラーを使用して、行が選択されている場合にグラデーション行の背景を描画する方法を示しています。The following code example demonstrates how to use a handler for the RowPrePaint event to paint a gradient row background if the row is selected. この例は、次の方法で使用できる大きな例の一部です。Windows フォーム DataGridView コントロールの行の外観をカスタマイズします。This example is part of a larger example available in How to: Customize the Appearance of Rows in the Windows Forms DataGridView Control.

// Paints the custom selection background for selected rows.
void dataGridView1_RowPrePaint(object sender,
        DataGridViewRowPrePaintEventArgs e)
    // Do not automatically paint the focus rectangle.
    e.PaintParts &= ~DataGridViewPaintParts.Focus;

    // Determine whether the cell should be painted
    // with the custom selection background.
    if ((e.State & DataGridViewElementStates.Selected) ==
        // Calculate the bounds of the row.
        Rectangle rowBounds = new Rectangle(
            this.dataGridView1.RowHeadersWidth, e.RowBounds.Top,
                DataGridViewElementStates.Visible) -
            this.dataGridView1.HorizontalScrollingOffset + 1,

        // Paint the custom selection background.
        using (Brush backbrush =
            new System.Drawing.Drawing2D.LinearGradientBrush(rowBounds,
            e.Graphics.FillRectangle(backbrush, rowBounds);
' Paints the custom selection background for selected rows.
Sub dataGridView1_RowPrePaint(ByVal sender As Object, _
    ByVal e As DataGridViewRowPrePaintEventArgs) _
    Handles dataGridView1.RowPrePaint

    ' Do not automatically paint the focus rectangle.
    e.PaintParts = e.PaintParts And Not DataGridViewPaintParts.Focus

    ' Determine whether the cell should be painted with the 
    ' custom selection background.
    If (e.State And DataGridViewElementStates.Selected) = _
        DataGridViewElementStates.Selected Then

        ' 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, _

        ' Paint the custom selection background.
        Dim backbrush As New _
            System.Drawing.Drawing2D.LinearGradientBrush(rowBounds, _
            Me.dataGridView1.DefaultCellStyle.SelectionBackColor, _
            e.InheritedRowStyle.ForeColor, _
            e.Graphics.FillRectangle(backbrush, rowBounds)
        End Try
    End If

End Sub


このイベントだけを処理することも、 RowPostPaintイベントと組み合わせて使用して、コントロールの行の外観をカスタマイズすることもできます。You can handle this event alone or in combination with the RowPostPaint event to customize the appearance of rows in the control. 行全体を自分で描画したり、行の特定の部分を描画したり、 DataGridViewRowPrePaintEventArgsクラスの次のメソッドを使用して他の部分を描画したりすることができます。You can paint entire rows yourself, or paint specific parts of rows and use the following methods of the DataGridViewRowPrePaintEventArgs class to paint other parts:

また、 VisualStyleRendererクラスを使用して、現在のテーマを使用して標準コントロールを描画することもできます。You can also use the VisualStyleRenderer class to paint standard controls using the current theme. 詳細については、「visual スタイルが使用されているコントロールのレンダリング」を参照してください。For more information, see Rendering Controls with Visual Styles. を使用してVisual Studio 2005Visual Studio 2005いる場合は、 DataGridViewコントロールで使用できる標準イメージの大規模なライブラリにアクセスすることもできます。If you are using Visual Studio 2005Visual Studio 2005, you also have access to a large library of standard images that you can use with the DataGridView control.

イベントを処理する方法の詳細については、次を参照してください。処理とイベントの発生します。For more information about how to handle events, see Handling and Raising Events.