解决热键和搜索框功能

Work-around for hotkey and searchBox function

我有一个用于菜单的 gridview,该菜单中有或多或少的 30 个项目,因此我为该菜单实现了一个搜索框。现在我的问题是我为按钮单击事件分配了热键,当我尝试在搜索框中键入这些热键时,它不会注册,而是会执行单击事件。

如果我在搜索框中输入时,热键会注册并且点击事件不会执行,而当我不在搜索框上输入时,热键会像它一样执行,那么是否有解决方法应该。

这是我的热键事件的示例。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            switch (keyData)
            {
              case Keys.A:
                  if (buttonThatDoSomething.Enabled == true)
                  {
                      buttonThatDoSomething.PerformClick();
                  }
                  return true; 
              default:
                  return base.ProcessCmdKey(ref msg, keyData);
            }
        }

我找到了解决我所处情况的方法,它对我有用 我设置了一个条件来检查搜索框焦点,如果是这样,则 keyData 将 return 其默认输入。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            switch (keyData)
            {
                case Keys.A:
                    if (buttonThatDoSomething.Enabled == true && searchBox.Focused == true)
                    {
                        return base.ProcessCmdKey(ref msg, keyData);
                    }
                    else if (buttonThatDoSomething.Enabled == true && searchBox.Focused == false)
                    {
                        buttonThatDoSomething.PerformClick();
                    }
                    return true;
                default:
                    return base.ProcessCmdKey(ref msg, keyData);
            }
        }