DataGridView.CellValueChanged Evento

Definizione

Si verifica quando il valore di una cella cambia.Occurs when the value of a cell changes.

public:
 event System::Windows::Forms::DataGridViewCellEventHandler ^ CellValueChanged;
public event System.Windows.Forms.DataGridViewCellEventHandler CellValueChanged;
member this.CellValueChanged : System.Windows.Forms.DataGridViewCellEventHandler 
Public Custom Event CellValueChanged As DataGridViewCellEventHandler 

Tipo evento

DataGridViewCellEventHandler

Esempio

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare l' CellValueChanged evento per aggiornare i valori in una colonna Balance di un oggetto DataGridView .The following code example demonstrates how to use the CellValueChanged event to update the values in a balance column of a DataGridView. Questo esempio fa parte di un esempio più ampio disponibile nell' SelectionChanged evento.This example is part of a larger example available in the SelectionChanged event.

private void DataGridView1_CellValueChanged(
    object sender, DataGridViewCellEventArgs e)
{
    // Update the balance column whenever the value of any cell changes.
    UpdateBalance();
}

private void DataGridView1_RowsRemoved(
    object sender, DataGridViewRowsRemovedEventArgs e)
{
    // Update the balance column whenever rows are deleted.
    UpdateBalance();
}

private void UpdateBalance()
{
    int counter;
    int balance;
    int deposit;
    int withdrawal;

    // Iterate through the rows, skipping the Starting Balance row.
    for (counter = 1; counter < (DataGridView1.Rows.Count - 1);
        counter++)
    {
        deposit = 0;
        withdrawal = 0;
        balance = int.Parse(DataGridView1.Rows[counter - 1]
            .Cells["Balance"].Value.ToString());

        if (DataGridView1.Rows[counter].Cells["Deposits"].Value != null)
        {
            // Verify that the cell value is not an empty string.
            if (DataGridView1.Rows[counter]
                .Cells["Deposits"].Value.ToString().Length != 0)
            {
                deposit = int.Parse(DataGridView1.Rows[counter]
                    .Cells["Deposits"].Value.ToString());
            }
        }

        if (DataGridView1.Rows[counter].Cells["Withdrawals"].Value != null)
        {
            if (DataGridView1.Rows[counter]
                .Cells["Withdrawals"].Value.ToString().Length != 0)
            {
                withdrawal = int.Parse(DataGridView1.Rows[counter]
                    .Cells["Withdrawals"].Value.ToString());
            }
        }
        DataGridView1.Rows[counter].Cells["Balance"].Value =
            (balance + deposit + withdrawal).ToString();
    }
}
Private Sub CellValueChanged(ByVal sender As Object, _
    ByVal e As DataGridViewCellEventArgs) _
    Handles DataGridView1.CellValueChanged

    ' Update the balance column whenever the values of any cell changes.
    UpdateBalance()
End Sub

Private Sub RowsRemoved(ByVal sender As Object, _
    ByVal e As DataGridViewRowsRemovedEventArgs) _
    Handles DataGridView1.RowsRemoved

    ' Update the balance column whenever rows are deleted.
    UpdateBalance()
End Sub

Private Sub UpdateBalance()
    Dim counter As Integer
    Dim balance As Integer
    Dim deposit As Integer
    Dim withdrawal As Integer

    ' Iterate through the rows, skipping the Starting Balance Row.
    For counter = 1 To (DataGridView1.Rows.Count - 2)
        deposit = 0
        withdrawal = 0
        balance = Integer.Parse(DataGridView1.Rows(counter - 1) _
            .Cells("Balance").Value.ToString())

        If Not DataGridView1.Rows(counter) _
            .Cells("Deposits").Value Is Nothing Then

            ' Verify that the cell value is not an empty string.
            If Not DataGridView1.Rows(counter) _
                .Cells("Deposits").Value.ToString().Length = 0 Then
                deposit = Integer.Parse(DataGridView1.Rows(counter) _
                    .Cells("Deposits").Value.ToString())
            End If
        End If

        If Not DataGridView1.Rows(counter) _
            .Cells("Withdrawals").Value Is Nothing Then
            If Not DataGridView1.Rows(counter) _
                .Cells("Withdrawals").Value.ToString().Length = 0 Then
                withdrawal = Integer.Parse(DataGridView1.Rows(counter) _
                    .Cells("Withdrawals").Value.ToString())
            End If
        End If

        DataGridView1.Rows(counter).Cells("Balance").Value = _
            (balance + deposit + withdrawal).ToString()
    Next
End Sub

Commenti

L' DataGridView.CellValueChanged evento si verifica quando viene eseguito il commit del valore specificato dall'utente, che in genere si verifica quando lo stato attivo esce dalla cella.The DataGridView.CellValueChanged event occurs when the user-specified value is committed, which typically occurs when focus leaves the cell.

Nel caso delle celle della casella di controllo, tuttavia, in genere si vuole gestire immediatamente la modifica.In the case of check box cells, however, you will typically want to handle the change immediately. Per eseguire il commit della modifica quando si fa clic sulla cella, è necessario gestire l' DataGridView.CurrentCellDirtyStateChanged evento.To commit the change when the cell is clicked, you must handle the DataGridView.CurrentCellDirtyStateChanged event. Nel gestore, se la cella corrente è una cella della casella di controllo, chiamare il DataGridView.CommitEdit metodo e passare il Commit valore.In the handler, if the current cell is a check box cell, call the DataGridView.CommitEdit method and pass in the Commit value.

Le righe del controllo non vengono ordinate automaticamente quando viene modificato il valore di una cella.Rows in the control are not automatically sorted when a cell value is changed. Per ordinare il controllo quando l'utente modifica una cella, chiamare il Sort metodo in un CellValueChanged gestore eventi.To sort the control when the user modifies a cell, call the Sort method in a CellValueChanged event handler.

Per altre informazioni su come gestire gli eventi, vedere la gestione e generazione di eventi.For more information about how to handle events, see Handling and Raising Events.

Si applica a