複数のテキスト ボックス、コンボ ボックスなどを持つユーザー コントロールを作成しました。ユーザー コントロールは通常のフォームでホストされます。テキスト ボックス、コンボ ボックスにキーボード ショートカットを割り当てたいと考えています。そのため、Ctrl + F を同時に押すと、テキスト ボックスの 1 つにフォーカスが置かれます。OnPreviewKeyDown を使用してキーを調べ、ユーザー コントロールでキー ダウン メソッドを起動しようとしました。デバッガーは、フォームの OnPreviewKeyDown メソッドにもヒットしません。フォームの keyPreview を true に設定しました。以下に私の実験のいくつかを提供しました。
誰かが私が間違っているところを指摘できますか? こんな難しいことが信じられない。私は単純なものが欠けているに違いありません。ありがとう
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;
}
}