我有一个窗体myForm,它的KeyPreview设置为true。KeyPreview在控制之前没有处理KeyUp事件
这个想法是,我想捕获CTRL-Enter并激发表单的提交按钮,无论哪个文本框(或其他控件)可能有焦点。
所以我成立了这个方法:
private void myForm_KeyUp(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.Enter)
{
btnCommit_Click(sender, new EventArgs());
}
}
这不正是它说。问题是,输入关键笔划也在具有焦点的文本框中触发,所以文本框现在在一个词的中间或光标所在的位置有一个分行符。根据MSDN文档:
当此属性设置为true时,表单将接收所有KeyPress,KeyDown和KeyUp事件。在表单的事件处理程序完成键击处理之后,将键击分配给具有焦点的控件。
这是不幸的,不是真的,我已经通过代码确认了文本框确实显示了新的换行符,然后myForm_KeyUp代码被触发。
我已尝试将两个
e.Handled = true;
和
e.SuppressKeyPress = true;
没有效果,因为文本框已经具备了断行。
任何想法?我错过了什么吗?