【发布时间】:2017-02-22 22:39:39
【问题描述】:
我正在使用DataGridViews 开发一个程序。
在一个DatagridView 中有一个DataGridViewTextBoxColumn,它可以被用户编辑。当用户在其中输入完数字后,他按键盘上的 ENTER 键。现在DataGridView 完成了所有Events,毕竟Events,最后一件事就是问题所在。
一切都完成了,Windows 将选择下一个DataGridViewRow,我无法阻止这种情况。
我试过了
if (e.KeyData == Keys.Enter) e.SuppressKeyPress = true; // or e.Handled
在我发现的几乎所有事件中。可悲的是,当DataGridViewTextBoxColumn 未处于编辑模式时,我只能阻止 ENTER 键。
这是我在编辑时找到 ENTER 的方法
添加事件
private void dgr_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
e.Control.KeyPress += new KeyPressEventHandler(dgr_KeyPress_NumericTester);
}
这是只接受数字输入的事件。
private void dgr_KeyPress_NumericTester(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && e.KeyChar != 8) e.Handled = true;
}
详细解释一下:
当用户输入一个有一些依赖的值时,我想给另一个控件焦点,所以他习惯于纠正依赖。
我也尝试过使用DependingControl.Focus(),但最后一个“输入”将是视图中的最后一件事。
有人知道如何预防吗?
【问题讨论】:
-
您只需要覆盖
ProcessCmdKey,请参阅[此处了解如何](windowsclient.net/blogs/faqs/archive/2006/05/30/…) 和[此处了解原因][2] [2]:blogs.msdn.com/b/jfoscoding/archive/2005/01/24/359334.aspx
标签: c# datagridview focus keypress datagridviewtextboxcell