The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

How to: Customize Data Formatting in the Windows Forms DataGridView Control

The following code example demonstrates how to implement a handler for the DataGridView.CellFormatting event that changes how cells are displayed depending on their columns and values.

Cells in the Balance column that contain negative numbers are given a red background. You can also format these cells as currency to display parentheses around negative values. For more information, see How to: Format Data in the Windows Forms DataGridView Control.

Cells in the Priority column display images in place of corresponding textual cell values. The Value property of the DataGridViewCellFormattingEventArgs is used both to get the textual cell value and to set the corresponding image display value.

Imports System
Imports System.Drawing
Imports System.Windows.Forms

Public Class Form1
    Inherits Form

    Private WithEvents dataGridView1 As New DataGridView()
    Private highPriImage As Bitmap
    Private mediumPriImage As Bitmap
    Private lowPriImage As Bitmap

    Public Sub New()

        ' Initialize the images.  
            highPriImage = New Bitmap("highPri.bmp")
            mediumPriImage = New Bitmap("mediumPri.bmp")
            lowPriImage = New Bitmap("lowPri.bmp")
        Catch ex As ArgumentException
            MessageBox.Show("The Priority column requires Bitmap images" & _
                "named highPri.bmp, mediumPri.bmp, and lowPri.bmp " & _
                "residing in the same directory as the executable file.")
        End Try 

        ' Initialize the DataGridView. 
        With dataGridView1
            .Dock = DockStyle.Fill
            .AllowUserToAddRows = False
            .Columns.AddRange( _
                New DataGridViewTextBoxColumn(), _
                New DataGridViewImageColumn())
            .Columns(0).Name = "Balance"
            .Columns(1).Name = "Priority"
            .Rows.Add("-100", "high")
            .Rows.Add("0", "medium")
            .Rows.Add("100", "low")
        End With 


    End Sub 

    ' Changes how cells are displayed depending on their columns and values. 
    Private Sub dataGridView1_CellFormatting(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) _
        Handles dataGridView1.CellFormatting

        ' Set the background to red for negative values in the Balance column. 
        If dataGridView1.Columns(e.ColumnIndex).Name.Equals("Balance") Then 

            'Dim intValue As Int32 
            If CInt(e.Value) < 0 Then 
                'if Int32.TryParse((String)e.Value, out intValue) &&  
                '   (intValue < 0))

                e.CellStyle.BackColor = Color.Red
                e.CellStyle.SelectionBackColor = Color.DarkRed
            End If 
        End If 

        ' Replace string values in the Priority column with images. 
        If dataGridView1.Columns(e.ColumnIndex).Name.Equals("Priority") Then 

            ' Ensure that the value is a string. 
            Dim stringValue As String = TryCast(e.Value, String)
            If stringValue Is Nothing Then Return 

            ' Set the cell ToolTip to the text value. 
            Dim cell As DataGridViewCell = _
                dataGridView1(e.ColumnIndex, e.RowIndex)
            cell.ToolTipText = stringValue

            ' Replace the string value with the image value. 
            Select Case stringValue

                Case "high"
                    e.Value = highPriImage
                Case "medium"
                    e.Value = mediumPriImage
                Case "low"
                    e.Value = lowPriImage

            End Select 

        End If 

    End Sub 

    Public Sub Main()
        Application.Run(New Form1())
    End Sub 

End Class

This example requires:

  • References to the System, System.Drawing, and System.Windows.Forms assemblies.

  • Bitmap images named highPri.bmp, mediumPri.bmp, and lowPri.bmp residing in the same directory as the executable file.

For information about building this example from the command line for Visual Basic or Visual C#, see Building from the Command Line (Visual Basic) or Command-line Building With csc.exe. You can also build this example in Visual Studio by pasting the code into a new project. How to: Compile and Run a Complete Windows Forms Code Example Using Visual Studio
How to: Compile and Run a Complete Windows Forms Code Example Using Visual Studio
How to: Compile and Run a Complete Windows Forms Code Example Using Visual Studio
How to: Compile and Run a Complete Windows Forms Code Example Using Visual Studio

Community Additions