Shift + F10 在文本框键按下事件中
本文关键字:事件 F10 文本 Shift | 更新日期: 2023-09-27 18:24:10
我有一个带有文本框的表单。
myTB.KeyDown += new KeyEventHandler(this.myTB_KeyDown);
在这种情况下,我可以让Keys.Apps打开上下文菜单。
现在上下文菜单的另一个快捷方式是 Shift + F10。
是否有可能在KeyDown
事件中捕捉到这一点?
我可以实现任何逻辑来捕获这些密钥?
到目前为止,我看到的是,当按下 Shift 键时,那个时间本身就会调用 KeyDown
事件,并且无法同时检查 Shift 和 F10!
如果我正确理解您的问题,并且您想禁用默认的 Shift+F10 菜单并自己处理这些组合,那么处理KeyDown
事件并检测组合和设置e.Handled=true;
就足够了:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode== Keys.F10 && e.Shift==true)
{
//Shift + F10 pressed, do what you need.
e.Handled = true;
}
}
您还可以通过将TextBox
的属性设置为 false
来禁用将显示的默认上下文菜单ShortcutsEnabled
。
这是检查 shift + F10 的一种非常安全的方法
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.F10 | Keys.Shift))
{
if (txtBox1.Focused)
{
txtBox1.Text = "Captured!";
return true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
描述:
这将捕获每个击键。 从那里将检查击键是否为 Shift+F10,单管的行为就像&&
. 之后,它会进行简单的检查,以查看您计划让事件发生的文本框是焦点还是主动控制。 如果它未能通过这些检查中的任何一个,它将击键信息发送到return base.ProcessCmdKey(ref msg, keyData);
这将为击键提供正常功能,而无需任何覆盖检查或您可能想要对捕获的击键执行的任何操作。