我有一个表单,我正试图捕捉键盘事件,但表单有按钮,所以每当我按下 Space 键时,其中一个按钮认为我按下了它。
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (btnclock.Text == "Start")
e.Handled = false;
else
{
i = Convert.ToInt16(rtb1.Text.IndexOf(e.KeyChar));
if (i == 0)
{
rtb1.Text = rtb1.Text.Remove(0, 1);
}
else
j++;
textBox1.Text = Convert.ToString((j));
}
}
如何避免这种情况并继续捕捉表单上的击键?
答案 0 :(得分:1)
按下space
键会使焦点按钮像点击一样动作。尝试在显示表单时以及单击按钮后在表单上明确设置焦点,以便在执行其操作后将焦点移离按钮:form1.Focus()
。
然而,正如Shani所提到的,在文本框中输入用户可能更容易。当文本框具有焦点时,大多数击键(包括space
,但tab
键将焦点转移到另一个控件)可以通过文本框的KeyPress
事件的处理程序捕获,在某种程度上与您捕获表单KeyPress
事件的方式非常相似。
答案 1 :(得分:-1)
最简单的解决方案是在文本框内输入,在表单中添加一个文本框,将其命名(对于代码,让我们说 - mTextBox)。
按下“开始”按钮后,您可以将焦点引用到文本框:
mTextBox.Focus();
您的解决方案(注册到Form.KeyPress)也应该工作,尝试注册到KeyDown。