でカスタム編集コントロールをホストしています。DataGridView
これは、記録のために でありTextBox
、Button
一緒にUserControl
です。DataGridViewColumn
新しい列とDataGridViewTextBoxCell
新しいセルを継承しました。
通常のDataGridViewTextBoxCell
では、セルにフォーカスがあるときにキーを押すと、編集モードが開始され、入力した文字が に表示されますTextBoxEditingControl
。ただし、継承したセルでは、キーを押しても値が渡されません。(実際には、現在のセル値を手動で渡す必要がありますInitializeEditingControl
。そうしないと、何も表示されません。) したがって、入力した最初の文字 (編集モードを開始する文字) は失われます。
OnKeyPress
、OnKeyDown
、およびを試しOnKeyUp
ましたDataGridViewCell
が、呼び出されません。KeyEntersEditMode
ただし、呼び出されるように見えるのは、押されたキーをチェックしている場合のみであるため、ここから始めるのがよいでしょう。問題は、KeyEventArgs を に変換する方法になりますchar
。これはアルファベットと数字の場合は些細なことですが、すべてのキーボードが同じように作られているわけではないため、他のキーの処理は面倒でよくても複雑です。これを自動的に行うコンバーター クラスがある場合は、教えてください。
他の誰かがこの問題に遭遇したか、または適切な回避策を見つけましたか?
注: この問題は、EditMode
が のバリエーションに設定されている場合に適用されますEditOnKeystroke
。に設定することEditOnEnter
は私のプロジェクトの有効な回避策ですが、のデフォルトの動作もエミュレートしたいと思いますTextBoxEditingControl
。