我的winforms应用程序中有一个用户控件,其中包含KeyPress事件中的代码:
private void txtCodigo_KeyPress(object sender, KeyPressEventArgs e)
{
if ((this.txtCodigo.Text.Length == 0) && (e.KeyChar == '\r'))
{
this.Limpiar();
if (LimpiarEvento != null)
LimpiarEvento(this, new EventArgs());
if (NextControl != null)
NextControl(this, new EventArgs());
}
if ((this.txtCodigo.Text.Length > 0) && (e.KeyChar == '\r'))
this.txtCodigo_Leave(sender, e);
if (NUMEROS.IndexOf(e.KeyChar) < 0)
{
e.Handled = true;
}
}
现在,我的问题是这个UserControl在我的应用程序中有多种形式,并且在我按下txtCodigo文本框中的回车键时工作正常,但是在一种形式中,没有触发回车键。即使我提出一个断点,它也根本不会发射。 为什么会发生这种情况?
编辑:
我只是尝试向表单本身添加KeyPress
事件并将KeyPreview
设置为true
并且未捕获Enter键...除了以外所有其他键都被捕获回车键。我真的不知道发生了什么。是的...输入键在键盘上正常工作:)
答案 0 :(得分:3)
答案 1 :(得分:0)
您确定在设计器/代码中添加了事件处理程序。它可以这样做。它应该添加到控件所属的构造函数中。
this.txtCodigo.KeyPress += new KeyPressHandler(txtCodigo_KeyPress);
编辑:
您正在使用此行代码设置要取消的事件。
e.Handled = true;
答案 2 :(得分:0)
可能发生的事情是:
如果您复制粘贴了您之前程序中的代码,则尚未设置事件处理程序。
首先从VS
的设计器添加事件处理程序,然后在添加的处理程序中粘贴代码。