DataGridView.CellPainting DataGridView.CellPainting DataGridView.CellPainting DataGridView.CellPainting Event

定義

セルが描画されなければならないときに発生します。Occurs when a cell needs to be drawn.

public:
 event System::Windows::Forms::DataGridViewCellPaintingEventHandler ^ CellPainting;
public event System.Windows.Forms.DataGridViewCellPaintingEventHandler CellPainting;
member this.CellPainting : System.Windows.Forms.DataGridViewCellPaintingEventHandler 
Public Custom Event CellPainting As DataGridViewCellPaintingEventHandler 

次のコード例は、このイベントを使用して、特定の列のすべてのセルの外観をカスタマイズする方法を示しています。The following code example illustrates how to use this event to customize the appearance of all cells in a particular column.

このコードは、次の方法で使用できる大きな例の一部です。Windows フォーム DataGridView コントロールのセルの外観をカスタマイズします。This code is part of a larger example available in How to: Customize the Appearance of Cells in the Windows Forms DataGridView Control.

private void dataGridView1_CellPainting(object sender,
System.Windows.Forms.DataGridViewCellPaintingEventArgs e)
{
    if (this.dataGridView1.Columns["ContactName"].Index ==
        e.ColumnIndex && e.RowIndex >= 0)
    {
        Rectangle newRect = new Rectangle(e.CellBounds.X + 1,
            e.CellBounds.Y + 1, e.CellBounds.Width - 4,
            e.CellBounds.Height - 4);

        using (
            Brush gridBrush = new SolidBrush(this.dataGridView1.GridColor),
            backColorBrush = new SolidBrush(e.CellStyle.BackColor))
        {
            using (Pen gridLinePen = new Pen(gridBrush))
            {
                // Erase the cell.
                e.Graphics.FillRectangle(backColorBrush, e.CellBounds);

                // Draw the grid lines (only the right and bottom lines;
                // DataGridView takes care of the others).
                e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left,
                    e.CellBounds.Bottom - 1, e.CellBounds.Right - 1,
                    e.CellBounds.Bottom - 1);
                e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1,
                    e.CellBounds.Top, e.CellBounds.Right - 1,
                    e.CellBounds.Bottom);

                // Draw the inset highlight box.
                e.Graphics.DrawRectangle(Pens.Blue, newRect);

                // Draw the text content of the cell, ignoring alignment.
                if (e.Value != null)
                {
                    e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,
                        Brushes.Crimson, e.CellBounds.X + 2,
                        e.CellBounds.Y + 2, StringFormat.GenericDefault);
                }
                e.Handled = true;
            }
        }
    }
}
Private Sub dataGridView1_CellPainting(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) _
    Handles dataGridView1.CellPainting

    If Me.dataGridView1.Columns("ContactName").Index = _
        e.ColumnIndex AndAlso e.RowIndex >= 0 Then

        Dim newRect As New Rectangle(e.CellBounds.X + 1, e.CellBounds.Y + 1, _
            e.CellBounds.Width - 4, e.CellBounds.Height - 4)
        Dim backColorBrush As New SolidBrush(e.CellStyle.BackColor)
        Dim gridBrush As New SolidBrush(Me.dataGridView1.GridColor)
        Dim gridLinePen As New Pen(gridBrush)

        Try

            ' Erase the cell.
            e.Graphics.FillRectangle(backColorBrush, e.CellBounds)

            ' Draw the grid lines (only the right and bottom lines;
            ' DataGridView takes care of the others).
            e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, _
                e.CellBounds.Bottom - 1, e.CellBounds.Right - 1, _
                e.CellBounds.Bottom - 1)
            e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1, _
                e.CellBounds.Top, e.CellBounds.Right - 1, _
                e.CellBounds.Bottom)

            ' Draw the inset highlight box.
            e.Graphics.DrawRectangle(Pens.Blue, newRect)

            ' Draw the text content of the cell, ignoring alignment.
            If (e.Value IsNot Nothing) Then
                e.Graphics.DrawString(CStr(e.Value), e.CellStyle.Font, _
                Brushes.Crimson, e.CellBounds.X + 2, e.CellBounds.Y + 2, _
                StringFormat.GenericDefault)
            End If
            e.Handled = True

        Finally
            gridLinePen.Dispose()
            gridBrush.Dispose()
            backColorBrush.Dispose()
        End Try

    End If

End Sub

注釈

このイベントを処理して、コントロール内のセルの外観をカスタマイズできます。You can handle this event to customize the appearance of cells in the control. セル全体を自分で塗りつぶすことも、セルの特定の部分をDataGridViewCellPaintingEventArgs.PaintBackground描画DataGridViewCellPaintingEventArgs.PaintContentして、メソッドまたはメソッドを使用して他の部分を描画することもできます。You can paint entire cells yourself, or paint specific parts of cells and use the DataGridViewCellPaintingEventArgs.PaintBackground or DataGridViewCellPaintingEventArgs.PaintContent methods 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.

このイベントを処理する場合は、セルに直接アクセスするのではなく、イベントハンドラーのパラメーターを使用してセルにアクセスする必要があります。When handling this event, you should access the cell through the parameters of the event handler, rather than access the cell directly.

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

適用対象

こちらもご覧ください