当Cell 的值改变时, OnCellValueChanged 事件会触发用 grid[e.ColumnIndex, e.RowIndex].Value 可得到修改后的值那我怎么在该事件中得到该 Cell 的旧值(修改前的值)呢, 我看过别的一些 grid 都会提供一个 OnCellValueChanging 事件, 在这里是可以取得旧值的但 .net 的 DataGridView 却没有...

解决方案 »

  1.   

    可以在BeginEdit時把值存在單元格的tag裡呀
      

  2.   

    只有用变通的方法来处理.
     private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {            if (e.ColumnIndex < 0 || e.RowIndex < 0) return;
                object oldvalue = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Tag;
                object newvalue = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
           // 
                //  相应的处理.
                //  
                this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Tag = newvalue;
            }
      

  3.   

    用:EditingControlShowing试试,参考;