c# - 热键和搜索框功能的解决方法
问题描述
我有一个用于菜单的网格视图,并且该菜单中有或多或少的 30 个项目,因此我为该菜单实现了一个搜索框。现在我的问题是我为按钮单击事件分配了热键,当我尝试在搜索框中键入这些热键时,它不会注册而是会执行单击事件。
是否有一种解决方法,当我在搜索框中键入时,热键会注册并且点击事件不会执行,当我不在 searchBox 上键入时,热键会按应有的方式执行。
这是我的热键事件的示例。
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);
}
}
推荐阅读
- php - Laravel 5.8:此路由不支持 POST 方法
- flutter - 当我在谷歌地图上绘制折线时出现问题 Flutter
- reactjs - 如何使用 UseRef React 钩子在 TextInput 中设置值
- c# - 通过一个 .NET5 微服务(应用程序)访问多个 Gmail 帐户
- java - 更新查询在preparedStatements Java中不起作用
- c - 如何在链接器文件中添加堆内存
- ionic-framework - 我正在尝试在离子应用程序中制作侧面菜单。但是侧边菜单的链接没有点击
- node.js - 应用程序之间通过 docker 网络的 dokku 内部连接
- javascript - 如何从对象中获取对应的key和value,并将其转换为数组对象
- firebase - 如何阻止堆栈中的两个小部件相互重叠?