http://www.cnblogs.com/colder/p/3517798.html

解决方案 »

  1.   


    这个可以实现数字的验证,有一个问题是如何在验证数字的那个press方法里面取到DataGridView其他单元格的值?
      

  2.   

    private void gvPurchaseOrder_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
            {
                if (this.gvPurchaseOrder.CurrentCell.ColumnIndex == 4)
                {
                    e.Control.KeyPress += new KeyPressEventHandler(EditingControl_KeyPress);
                }
            }        private void EditingControl_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar))
                {
                    e.Handled = true;
                }
                else
                {
                        gv.CurrentRow.Cells[3].Value                        //这里如何取到cell[3]的值?
                }
            }
      

  3.   

    gv.CurrentRow.Cells[3].Value不就是值吗,你不是已经写出来了
      

  4.   

    不行你在cellenter事件里先把行号记录到全局变量里,等keypress的时候再去拿
      

  5.   

    另外,还有个问题,我输入的时候已经到了“345”了,可是EditingControlShowing和KeyPress取的永远只是上一个值,这个怎么解决?我想取实时的值,然后计算。
      

  6.   

    DataGridView本身就有keypress事件,不要在EditingControlShowing里再给它绑定事件,可能会导致绑定了多个事件
      

  7.   

    那个keypress事件,在编辑Cell单元格的时候不会触发啊,我想在编辑单元格的时候实时计算。
    比如:单元格3表示输入的是数量      ×         单元格4的单价    =    单元格5的结果  
    实时计算!
      

  8.   

    其实你应该在cellendedit里计算
    没输入完就计算有任何意义吗?
    比如我想输入123
    你先按1计算出个东西来,又按12计算一遍,这都不是我想要的结果啊