[英]Button KeyPress Not Working for Enter Key
我有一个按钮,我为其设置了KeyPress
事件。
this.myButton.KeyPress += new KeyPressEventHandler(this.myButtonEvent_keypress);
private void myButtonEvent_keypress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Return || e.KeyChar == (char)Keys.Space)
{
// do something
}
}
现在,只要按下Space键,我就会触发事件。 这部分工作正常。
但由于某种原因,按Enter键不会触发KeyPress
事件。 Alt , Ctrl , Shift也不起作用。
如何让按钮接收按键?
更新:
我也试过下面没有任何运气
this.myButton.MouseClick += new MouseEventHandler(myButton_Click);
当Button
具有焦点并按Enter或Space时 , Click
事件会升起。
因此,要处理Enter或Space,它足以处理Click
事件并在那里放置您需要的逻辑。
所以你只需要使用button1.Click += button1_Click;
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Clicked!");
}
如果你真的想知道是否按下了Enter或Space ,你可以使用PreviewKeyDown
事件:
private void button1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if(e.KeyCode== Keys.Enter)
{
MessageBox.Show("Enter");
}
if (e.KeyCode == Keys.Space)
{
MessageBox.Show("Space");
}
}
可以使用click事件处理Enter和space。
this.myButton.Click += new EventHandler(myButton_Click);
WinForms中的Button控件将包含Enter , Space , Tab , ESC和其他一些特殊键的新闻事件。 拦截这些事件的一种方法是覆盖Control.ProcessDialogKey。 或者您可以覆盖IsDialogKey来说明是否应将键作为特殊情况处理。
另一个选项是在父窗体上设置KeyPreview = true。 然后,您可以在表单级别处理所有KeyPress事件,并使用Form.ActiveControl,如果您需要查看哪些控件具有焦点
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.