我有一个 DataGridView (WinForms),我在其中定义了一个从 DataGridViewTextBoxEditingControl 派生的自定义 EditingControl,它只允许数字字符。
每次用户按键时,我都需要在 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);
}
}
}