加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Fire Form KeyPress事件

发布时间:2020-12-15 18:14:18 所属栏目:百科 来源:网络整理
导读:我有一个C#winform,我有1个按钮. 现在,当我运行我的应用程序时,该按钮会自动获得焦点. 问题是我的表单的KeyPress事件不起作用,因为按钮是聚焦的. 我试过这个.Focus();在FormLoad()事件上,但仍然没有KeyPress事件. 解决方法 您需要覆盖表单的 ProcessCmdKey m
我有一个C#winform,我有1个按钮.
现在,当我运行我的应用程序时,该按钮会自动获得焦点.

问题是我的表单的KeyPress事件不起作用,因为按钮是聚焦的.

我试过这个.Focus();在FormLoad()事件上,但仍然没有KeyPress事件.

解决方法

您需要覆盖表单的 ProcessCmdKey method.这是您通知子控件具有键盘焦点时发生的关键事件的唯一方式.

示例代码:

protected override bool ProcessCmdKey(ref Message msg,Keys keyData)
{
    // look for the expected key
    if (keyData == Keys.A)
    {
        // take some action
        MessageBox.Show("The A key was pressed");

        // eat the message to prevent it from being passed on
        return true;

        // (alternatively,return FALSE to allow the key event to be passed on)
    }

    // call the base class to handle other key events
    return base.ProcessCmdKey(ref msg,keyData);
}

至于为什么this.Focus()不起作用,这是因为表单本身不能具有焦点.特定控件必须具有焦点,因此当您将焦点设置到窗体时,它实际上将焦点设置为可以接受具有最低TabIndex值的焦点的第一个控件.在这种情况下,那是你的按钮.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读