datagridview数据更新事件的编撰

datagridview数据更新事件的编写
我已经快被datagridview数据更新问题折磨疯了。。
首先申明我不用数据绑定,没有数据源,我也不会用数据绑定,所以大侠们原谅我这么任性吧。。。
我用一个二维数组A[3.3]存储datagridview中单元格的数据。我做了个界面,在界面上可以单击datagridview的单元格进行修改,通过cellendedit事件,被修改的数据写入到A中,然后我有一个计算方法B,B通过一些参数和公式对A中的数据进行计算和修改,也就是说A的数据又一次发生了改变,现在我要把A的数据再重新导入到界面的datagridview中,难题来了我要求这些操作都是一瞬间完成的,即我对datagridview某个单元格的数据进行修改后,鼠标不点击任何按钮和单元格,datagridview自动进行更新,我现在的问题是修改某个单元格数据后必须点击下某个单元格整个datagridview的数据才会得到更新,这是问题1,问题2是我得更新数据函数是写在cellendedit事件中,有时我点击某一单元格,就是无意中点了一下,为嘛该单元格的数据自动变成0,这是为嘛啊!!!!
下面是我对于自己问题的图解,原谅我放荡不羁的画风,如果还是看不懂我的问题描述,这。。。我再想办法吧~~~
祈求大侠现身~~~datagridview数据更新事件的编撰
------解决思路----------------------
datagridview数据更新事件的编撰

你可以在DataGridView的触发事件中看看这两个函数。cellvalidating  and cellvalidated
------解决思路----------------------
DataGridView数据更新事件的编写示例
//更新数据事件
 public void Update(Instance it)
        {
            SqlConnection sc = GetConnection();//调用GetConnections()方法,得到连接对象
            try
            {
                sc.Open();//打开到数据库的连接
                SqlCommand cmd = new SqlCommand(//创建SqlCommand对象
                    "update tb_friend set phone=@phone where names=@names", sc);
                cmd.Parameters.Add("@names", SqlDbType.VarChar).Value = it.Name;//向SqlCommand对象添加参数
                cmd.Parameters.Add("phone", SqlDbType.VarChar).Value = it.phone;//向SqlCommand对象添加参数
                cmd.ExecuteNonQuery();//执行SqlCommand对象中的SQL命令
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (sc.State == ConnectionState.Open)//判断是否连接数据库
                {
                    sc.Close();//如果已经连接则关闭连接
                }
            }
        }//codego.net/tags/1/1/
//绑定dataGridView控件实现更新事件按钮
private void btn_update_Click(object sender, EventArgs e)
        {
            //调用datatier对象的Update()方法,更改数据库中的信息
            dt.Update(new Instance() { Name = txt_name_update.Text, phone = txt_phone_update.Text });
            dataGridView1.DataSource = dt.Select();//更新dataGridView1控件中的信息
            Clear();//清空TextBox控件中的文本
        }