Я размещаю пользовательский элемент управления для редактирования в DataGridView
, который для записи представляет собой TextBox
и Button
вместе в UserControl
. Я унаследовал от DataGridViewColumn
для нового столбца и DataGridViewTextBoxCell
для новой ячейки.
При обычном DataGridViewTextBoxCell
, если вы нажмете клавишу, когда ячейка будет в фокусе, начнется режим редактирования и введенный вами символ появится в TextBoxEditingControl
. Однако в моей унаследованной ячейке при нажатии клавиш не передается значение. (На самом деле, вы должны вручную передать текущее значение ячейки в InitializeEditingControl
, иначе вообще ничего не появится.) Итак, первый введенный вами символ (тот, который начинает режим редактирования) теряется.
Я пытался OnKeyPress
, OnKeyDown
и OnKeyUp
в DataGridViewCell
, но их никогда не вызывали. Однако, KeyEntersEditMode
, кажется, вызывается, и только тогда, когда он проверяет нажатие клавиши, так что это может быть хорошим началом. Тогда возникает проблема, как перевести KeyEventArgs в char
. Это тривиально для алфавита и цифр, но поскольку не все клавиатуры созданы равными, обработка других клавиш в лучшем случае сложна и сложна. Если есть класс конвертера, который будет делать это автоматически, пожалуйста, просветите меня.
Кто-нибудь еще сталкивался с этой проблемой или нашел хороший обходной путь?
Примечание. Эта проблема возникает, если для EditMode
установлено любое изменение EditOnKeystroke
. Установка EditOnEnter
является допустимым обходным решением для моего проекта, но я также хотел бы эмулировать поведение по умолчанию TextBoxEditingControl
.