热键和搜索框功能的解决方案



我有一个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将返回其默认输入。

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);
}
}

最新更新