This documentation is archived and is not being maintained.

DataGridView.CellValidating Event

Note: This event is new in the .NET Framework version 2.0.

Occurs when a cell loses input focus, enabling content validation.

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

Public Event CellValidating As DataGridViewCellValidatingEventHandler
Dim instance As DataGridView
Dim handler As DataGridViewCellValidatingEventHandler

AddHandler instance.CellValidating, handler

/** @event */
public void add_CellValidating (DataGridViewCellValidatingEventHandler value)

/** @event */
public void remove_CellValidating (DataGridViewCellValidatingEventHandler value)

JScript supports the use of events, but not the declaration of new ones.

Canceling this event cancels the changes to the current cell. When this event is canceled in data-bound mode, the new value is not pushed to the underlying data source. When this event is canceled in virtual mode, the CellValuePushed event will not be raised.

Handle the CellValidated event to perform post-validation processing.

For more information about handling events, see Consuming Events.

The following code example handles the CellValidating event to ensure that only positive integers are entered by the user. This example is part of a larger example available in the VirtualMode reference topic.

Private Sub dataGridView1_CellValidating(ByVal sender As Object, _
    ByVal e _
    As DataGridViewCellValidatingEventArgs) _
    Handles dataGridView1.CellValidating

    Me.dataGridView1.Rows(e.RowIndex).ErrorText = ""
    Dim newInteger As Integer

    ' Don't try to validate the 'new row' until finished 
    ' editing since there
    ' is not any point in validating its initial value.
    If dataGridView1.Rows(e.RowIndex).IsNewRow Then Return
    If Not Integer.TryParse(e.FormattedValue.ToString(), newInteger) _
        OrElse newInteger < 0 Then

        e.Cancel = True
        Me.dataGridView1.Rows(e.RowIndex).ErrorText = "the value must be a non-negative integer"

    End If
End Sub

private void dataGridView1_CellValidating(Object sender,
    DataGridViewCellValidatingEventArgs e)
    int newInteger = 0;
    // Don't try to validate the 'new row' until finished 
    // editing since there
    // is not any point in validating its initial value.
    if (dataGridView1.get_Rows().get_Item(
        e.get_RowIndex()).get_IsNewRow()) {
    if (!(Int32.TryParse(e.get_FormattedValue().ToString(), newInteger)) 
        || newInteger < 0) {
} //dataGridView1_CellValidating

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

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

.NET Framework

Supported in: 2.0