DataGridView.CellValueChanged Evento
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Ocorre quando o valor de uma célula é alterado.
public:
event System::Windows::Forms::DataGridViewCellEventHandler ^ CellValueChanged;
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 de evento
Exemplos
O exemplo de código a seguir demonstra como usar o CellValueChanged evento para atualizar os valores em uma coluna de balanceamento de um DataGridView. Este exemplo faz parte de um exemplo maior disponível no SelectionChanged evento.
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
Comentários
O DataGridView.CellValueChanged evento ocorre quando o valor especificado pelo usuário é confirmado, o que normalmente ocorre quando o foco sai da célula.
No caso de células de caixa marcar, no entanto, você normalmente deseja lidar com a alteração imediatamente. Para confirmar a alteração quando a célula é clicada, você deve manipular o DataGridView.CurrentCellDirtyStateChanged evento. No manipulador, se a célula atual for uma célula de caixa marcar, chame o DataGridView.CommitEdit método e passe o Commit valor.
As linhas no controle não são classificadas automaticamente quando um valor de célula é alterado. Para classificar o controle quando o usuário modificar uma célula, chame o Sort método em um CellValueChanged manipulador de eventos.
Para obter mais informações sobre como lidar com eventos, consulte Manipulando e levantando eventos.