什么C#Datagridview事件将在操作后立即更新列

什么C#Datagridview事件将在操作后立即更新列,c#,winforms,datagridview,C#,Winforms,Datagridview,我将datagridview中的2个单元格相乘,以在第三列上显示它,我希望第三个单元格上的结果在编辑第一个或第二个单元格上的字段时完成 我正在使用-private void DataGridView1\u CellClick(对象发送者,DataGridViewCellEventArgs e) 但这只会在我单击datagrid中的另一个单元格时更新 我需要一个事件建议,可以像在MSExcel上那样交付它我使用的私有void DataGridView1\u CellEndEdit(对象发送者,Da

我将datagridview中的2个单元格相乘,以在第三列上显示它,我希望第三个单元格上的结果在编辑第一个或第二个单元格上的字段时完成

我正在使用-
private void DataGridView1\u CellClick(对象发送者,DataGridViewCellEventArgs e)
但这只会在我单击datagrid中的另一个单元格时更新


我需要一个事件建议,可以像在MSExcel上那样交付它

我使用的
私有void DataGridView1\u CellEndEdit(对象发送者,DataGridViewCellEventArgs e)
,它工作得很好。谢谢。

DataGridView.CellValueChanged
[您是否考虑过从您的数据制作一个
DataTable
,然后向表中添加一个
表达式
列来执行乘法?类似于
multiplyColumn.Expression=“col1*col2”
MS:这些都不起作用我发布的答案会在你在单元格中键入每个数字时重新计算答案。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DgvMultiplyTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void CalculateAnswer()
        {
            int dgvRow = dataGridView1.CurrentCell.RowIndex;
            int dgvColumn = dataGridView1.CurrentCell.ColumnIndex;
            int firstNumber = 0;
            int secondNumber = 0;
            int answer = 0;


            if (dataGridView1.Rows[dgvRow].Cells[0].EditedFormattedValue != null &&
               dataGridView1.Rows[dgvRow].Cells[1].EditedFormattedValue != null)
            {
                if ((int.TryParse(dataGridView1.Rows[dgvRow].Cells[0].EditedFormattedValue.ToString(), out firstNumber) == true) &&
                     (int.TryParse(dataGridView1.Rows[dgvRow].Cells[1].EditedFormattedValue.ToString(), out secondNumber) == true))
                {
                    answer = firstNumber * secondNumber;
                    dataGridView1.Rows[dgvRow].Cells[2].Value = answer;
                }
            }
        }

        private void DataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            e.Control.KeyUp -= new KeyEventHandler(Control_KeyUp);
            e.Control.KeyUp += new KeyEventHandler(Control_KeyUp);
        }

        private void Control_KeyUp(object sender, KeyEventArgs e)
        {
            CalculateAnswer();
            dataGridView1.Invalidate();
        }
    }
}