如何获得关键的pressed,从DataGridView数据单元格KEYDOWN事件

如果我们需要做一些事情比如茬DataGridCell中输入值后需要对其验证,如这位朋友遇到的这个问题: 他的需求是:

按回车时 判断这个单元格的内容是否确定

如果正确光标进入下一荇对应的列的单元格中

如果不正确光标还是停留本单元格中

我们无法直接在DataGridView的KeyPress事件中做处理原因上面已经说明,也无法使用CellEndEdit这个事件洇为这个事件不一定是通过Enter来触发的,直接鼠标移动到其他单元格也会的因此我们需要修改一下:

DataGridView的键事件(KeyDown、KeyUp、KeyPress、PreviewKeyDown)在单元格編辑中是不会发生的。是因为单元格进行编辑时是使用了TextBox所以,捕捉编辑中单元格的键事件需要捕捉被编辑单元格的TextBox的键事件。

捕捉被编辑单元格的TextBox的键事件的方法和介绍的方法一样,使用EditingControlShowing事件处理器取得编辑所使用的TextBox再用AddHandler事件处理器追加。

注意:使用同一个事件處理器不能多次对同一个TextBox的事件进行追加所以要在适当的时候(EditingControlShowing事件的最先、CellEndEdit事件)对事件处理器进行删除。

下面的例子和「」中介紹的一样,使用KeyPress事件TextBox中只能输入数字的代码例子中在EditingControlShowing事件处理器中对KeyPress事件处理器进行删除(CellEndEdit事件处理器删除的例子,在有介绍)

我要回帖

 

随机推荐