This documentation is archived and is not being maintained.

DataGridView.CellValueNeeded Event

Occurs when the VirtualMode property of the DataGridView control is true and the DataGridView requires a value for a cell in order to format and display the cell.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

'Declaration
Public Event CellValueNeeded As DataGridViewCellValueEventHandler
'Usage
Dim instance As DataGridView 
Dim handler As DataGridViewCellValueEventHandler 

AddHandler instance.CellValueNeeded, handler

Use this event in virtual mode to populate cells with data from a custom data store without causing rows to become unshared. For more information about row sharing, see Best Practices for Scaling the Windows Forms DataGridView Control. For more information about virtual mode, see Virtual Mode in the Windows Forms DataGridView Control.

To add user-specified values to your custom data store, handle the CellValuePushed event.

For more information about handling events, see Consuming Events.

The following code example handles the CellValueNeeded event to populate cells with positive integers. This example is part of a larger example available in the VirtualMode reference topic.

#Region "data store maintance" 
    Const initialValue As Integer = -1

    Private Sub dataGridView1_CellValueNeeded(ByVal sender As Object, _
        ByVal e As DataGridViewCellValueEventArgs) _
        Handles dataGridView1.CellValueNeeded

        If store.ContainsKey(e.RowIndex) Then 
            ' Use the store if the e value has been modified  
            ' and stored.
            e.Value = store(e.RowIndex)
        ElseIf newRowNeeded AndAlso e.RowIndex = numberOfRows Then 
            If dataGridView1.IsCurrentCellInEditMode Then
                e.Value = initialValue
            Else 
                ' Show a blank value if the cursor is just resting 
                ' on the last row.
                e.Value = String.Empty
            End If 
        Else
            e.Value = e.RowIndex
        End If 
    End Sub 

    Private Sub dataGridView1_CellValuePushed(ByVal sender As Object, _
        ByVal e As DataGridViewCellValueEventArgs) _
        Handles dataGridView1.CellValuePushed

        store.Add(e.RowIndex, CInt(e.Value))

    End Sub
#End Region

    Dim store As System.Collections.Generic.Dictionary(Of Integer, Integer) = _
        New Dictionary(Of Integer, Integer)

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

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0
Show: