DataGridView.CellValidating 事件

定义

在单元格失去输入焦点时发生,并启用内容验证功能。Occurs when a cell loses input focus, enabling content validation.

public:
 event System::Windows::Forms::DataGridViewCellValidatingEventHandler ^ CellValidating;
public event System.Windows.Forms.DataGridViewCellValidatingEventHandler CellValidating;
member this.CellValidating : System.Windows.Forms.DataGridViewCellValidatingEventHandler 
Public Custom Event CellValidating As DataGridViewCellValidatingEventHandler 

示例

下面的代码示例处理 CellValidating 事件,以确保仅用户输入正整数。The following code example handles the CellValidating event to ensure that only positive integers are entered by the user. 此示例是 VirtualMode 参考主题中提供的一个更大示例的一部分。This example is part of a larger example available in the VirtualMode reference topic.

void VirtualConnector::dataGridView1_CellValidating
    (Object^ sender, DataGridViewCellValidatingEventArgs^ e)
{
    int newInteger;

    // 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) 
    {
        return; 
    }
    if (!Int32::TryParse(e->FormattedValue->ToString(), 
        newInteger) || (newInteger < 0))
    {
        e->Cancel = true;
    }
}
private void dataGridView1_CellValidating(object sender,
    DataGridViewCellValidatingEventArgs e)
{
    dataGridView1.Rows[e.RowIndex].ErrorText = "";
    int newInteger;

    // 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) { return; }
    if (!int.TryParse(e.FormattedValue.ToString(),
        out newInteger) || newInteger < 0)
    {
        e.Cancel = true;
        dataGridView1.Rows[e.RowIndex].ErrorText = "the value must be a non-negative integer";
    }
}
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

注解

取消此事件将取消对当前单元格所做的更改。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. 如果在虚拟模式下取消此事件,则不会引发 CellValuePushed 事件。When this event is canceled in virtual mode, the CellValuePushed event will not be raised.

处理 CellValidated 事件以执行验证后处理。Handle the CellValidated event to perform post-validation processing.

有关如何处理事件的详细信息,请参阅处理和引发事件For more information about how to handle events, see Handling and Raising Events.

适用于

另请参阅