我有一个DataGridView(WinForms),其中我定义了一个自定义的EditingControl,它派生自DataGridViewTextBoxEditingControl,只允许数字字符。
每当用户按下键时,我需要在DataGridView上引发CellValueChanged事件,但默认行为是仅在编辑完成后引发事件。
如何在每次按键时引发事件?
每当用户按下键时,我需要在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);
}
}
}