在WinForm中屏蔽回车键(Enter)和空格键(Space)触发按钮事件

首先,网上绝大部分是如下方案:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Space || e.KeyCode == Keys.Enter)//屏蔽空格键、Enter键触发按钮
    {
        e.Handled = true;//表示已经处理了键盘消息
    }
}

但是,上述办法只能屏蔽空格键(Space),但对回车键(Enter)无效,断点调试发现按下回车键(Enter)根本不触发上述事件。

经过多次尝试,最终就有了下述代码成功解决问题:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
   if (keyData == Keys.Space || keyData == Keys.Enter)//屏蔽空格键、Enter键触发按钮
   {
        return true;
   }
   return base.ProcessCmdKey(ref msg, keyData);
}

这是覆盖了窗体的ProcessCmdKey方法,成功拦截了键盘事件。

—— 完 ——
相关推荐
评论

立 为 非 似

中 谁 昨 此

宵 风 夜 星

。 露 , 辰

文章点击榜

细 无 轻 自

如 边 似 在

愁 丝 梦 飞

。 雨 , 花