KeyPress事件在WinForm UserControl上没有触发
本文关键字:UserControl 事件 WinForm KeyPress | 更新日期: 2023-09-27 18:01:34
我有一个用户控制在我的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键未被捕获…除Enter键外,所有其他键都被捕获。我真的不知道发生了什么事。是的……键盘上的回车键可以正常工作:)
这个特定的表单有它的AcceptButton设置吗?
(已在评论中回答)
这个SO问题可能与修复表单相关:防止WinForm AcceptButton处理返回键
可能是这样的:
如果您从以前的程序中复制粘贴了代码,则未设置事件处理程序。
首先从VS
的设计器添加事件处理程序,并在添加的处理程序中粘贴您的代码。
您确定在设计器/代码中添加了事件处理程序吗?可以这样做。它应该被添加到控件所属的构造函数中。
this.txtCodigo.KeyPress += new KeyPressHandler(txtCodigo_KeyPress);
编辑:您正在使用这行代码将事件设置为取消。
e.Handled = true;
来源:http://msdn.microsoft.com/en-us/library/system.windows.forms.keypresseventargs.handled (v = vs.110) . aspx