DataGridView单元格编辑结束事件

Har*_*ali 4 .net c# datagridview winforms

我有一个DataGridView,其中我有一个列'total'.DataGridView是可编辑的true.在网格视图下方我有文本框,其中我想要网格的"总"列的总和.我所做的是,当用户进入网格中的总列时,它会在网格视图中反映到总文本字段中.为了在文本字段中显示总计,我添加了网格视图的总列.但问题是,如果我第一次进入网格视图的总列,它会立即反映到下面的文本字段中.但是如果我在DataGridView的总列中编辑相同的值,则网格下面的文本字段会将其添加到之前的值,我希望在文本字段中创建新的编辑值.如何解决这个问题?以下是代码: -

private void grdCaret_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    try
    {  
        string value = grdCaret.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
        if (e.ColumnIndex == 1)
        {
           // int val = int.Parse(value);
           // quantity = val;
           // ekundag = ekundag + quantity;
           //tbTotDag_cr.Text =ekundag.ToString();

            int quantity = 0;

            foreach (DataGridViewRow row in grdCaret.Rows)
                quantity +=(int) grdCaret.Rows[e.RowIndex].Cells[1].Value.ToString();
                //quantity +=(int) row.Cells[1].Value;

            tbTotDag_cr.Text = quantity.ToString();
        }

        if (e.ColumnIndex == 2)
        {
            float val = float.Parse(value);
            total = val;
            ekunrakam = ekunrakam + total;
            tbTotPrice_cr.Text = ekunrakam.ToString();
        }
        grdCaret.Columns[3].ReadOnly = false;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

Ser*_*kiy 5

使用CellEndEdit事件更新您的总价值:

private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    int total = 0;

    foreach (DataGridViewRow row in dataGridView.Rows)            
        total += (int)row.Cells[columnTotal.Index].Value;

    totalTextBox.Text = total.ToString();           
}
Run Code Online (Sandbox Code Playgroud)