我在 a 中托管了一个自定义编辑控件,DataGridView
据记录,它是 aTextBox
和Button
一起在 a 中UserControl
。我继承DataGridViewColumn
了新列和DataGridViewTextBoxCell
新单元格。
正常情况DataGridViewTextBoxCell
下,如果您在单元格获得焦点时按下某个键,它将进入编辑模式,您键入的字符将出现在TextBoxEditingControl
. 但是,在我继承的单元格中,按键没有传递任何值。(事实上,您必须手动传递当前单元格值,InitializeEditingControl
否则根本不会显示任何内容。)因此,您键入的第一个字符(开始编辑模式的字符)丢失了。
我已经尝试过OnKeyPress
,OnKeyDown
和OnKeyUp
in ,DataGridViewCell
但他们从未被调用过。KeyEntersEditMode
但是,似乎确实被调用了,并且仅在它检查按下的键时才被调用,因此这可能是一个不错的起点。那么问题就变成了如何将 KeyEventArgs 转换为char
. 这对于字母和数字来说是微不足道的,但由于并非所有键盘都是平等的,因此处理其他键充其量是混乱和复杂的。如果有一个转换器类可以自动执行此操作,请赐教。
有没有其他人遇到过这个问题或找到了一个好的解决方法?
注意:此问题适用于EditMode
设置为 的任何变体时EditOnKeystroke
。设置为EditOnEnter
对我的项目来说是一个有效的解决方法,但我也想模拟默认行为TextBoxEditingControl
。