数字のみを許可する DataGridViewTextBoxEditingControl から派生したカスタム EditingControl を定義した DataGridView (WinForms) があります。
ユーザーがキーを押すたびに DataGridView で CellValueChanged イベントを発生させる必要がありますが、デフォルトの動作では、編集が完了した場合にのみイベントが発生します。
キーが押されるたびにイベントを発生させるにはどうすればよいですか?
public class DataGridViewNumericTextBoxEditingControl : DataGridViewTextBoxEditingControl
{
protected override void OnKeyPress(KeyPressEventArgs e)
{
e.Handled = Char.IsLetter(e.KeyChar);
if (!e.Handled)
RaiseDataGridViewCellValueChanged(); // <-- Any way?
}
}
アップデート:
回避策を見つけましたが、それが良い解決策かどうかはわかりません:
public class DataGridViewNumericTextBoxEditingControl : DataGridViewTextBoxEditingControl
{
protected override void OnKeyPress(KeyPressEventArgs e)
{
e.Handled = Char.IsLetter(e.KeyChar);
if (!e.Handled)
{
EditingControlDataGridView.EndEdit();
EditingControlDataGridView.BeginEdit(false);
}
}
}