我创建了一个具有多个文本框、组合框等的用户控件。用户控件托管在普通表单上。我想为文本框、组合框分配键盘快捷键。因此,当同时按下 Ctrl + F 时,焦点将放在其中一个文本框上。我尝试使用 OnPreviewKeyDown 检查键,然后在用户控件上触发 key down 方法。调试器甚至没有点击表单上的 OnPreviewKeyDown 方法。我已在表单上启用 keyPreview 为真。我在下面提供了一些我的实验。
谁能指出我哪里出错了?我无法相信这样的事情是如此困难。我一定错过了一些简单的东西。谢谢
protected override void OnPreviewKeyDown(PreviewKeyDownEventArgs e)
{
Keys k = e.KeyCode;
UserControl1.UserControl_KeyPress(k);
}
public void UserControl_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 'F')
tbxHostName.Focus();
switch (e.KeyCode)
{
case Keys.F:
this.cmbxProtocol.Focus();
break;
case Keys.H:
this.tbxHostName.Focus();
break;
default:
break;
}
}