【问题标题】:How can I stop a button from stealing my keypress event?如何阻止按钮窃取我的按键事件?
【发布时间】:2013-06-04 17:40:26
【问题描述】:

我有一个按钮不断窃取我的按键事件。我该如何覆盖这个?当焦点在表单上时,我希望在单击输入时运行一个方法,但是按钮会窃取它。

【问题讨论】:

  • 按钮是默认的吗?在表单上查找 AcceptButton 属性。
  • AcceptButton 设置为 none
  • 您可能正在注册button.Click 事件,该事件会窃取Enter 新闻。你应该使用button.MouseClick 或类似的东西。
  • 糟糕:这有助于按钮窃取按键事件,但现在按键不运行我希望它运行的方法。
  • @user2452737 我不明白你的意思。你的意思是你的按键事件处理程序没有被调用?然后尝试keydown或其他东西。并请把我的名字标记为“@nawfal”(没有空格,就像我做的那样),然后我才会收到通知。

标签: c# events button keypress


【解决方案1】:

处理表单中的 KeyDown 事件:

private void Form1_KeyDown(Object sender, KeyEventArgs e)
{
    if ((e.KeyCode & Keys.Enter) == Keys.Enter)
    {
        //do something
        e.Handled = true;
    }
    else
        base.OnKeyDown(e);
}

【讨论】:

    【解决方案2】:

    Buttons窃取KeyPress事件,他们“只”窃取Enter密钥。所以你可以这样做:

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == Keys.Enter)
        {
            processYourKey( keyData);
            return false;                 // do not steal!
        }
        processYourKey( keyData);
        return base.ProcessCmdKey(ref msg, keyData);
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      相关资源
      最近更新 更多