我有一个DataGridView(WinForms),其中我定义了一个自DataGridViewTextBoxEditingControl派生的自定义EditingControl,它只允许数字字符。从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);
}
}
}
我试图检测单元格文本发生变化时没有等待焦点离开单元格。 – Juanma 2008-10-26 10:11:52