テキストなしでチェックボックスにショートカットキーを追加する方法
質問
チェックボックスにショートカットキーを追加したい。チェックボックスにはテキストがありません。ラベルを付けて、チェックボックスをチェックします。ラベルには、Exのショートカットキーがあります。 &見える。したがって、ラベルはvをショートカットキーとして持っています。誰かがAlt+Vを押すと、Chechboxは選択されていない状態から同じように変更され、反対の方法で同じように変更する必要があります。
解決
ラベルコントロールは、キーボードニーモニックに関して特別です。ラベルはフォーカスを得ることができないため、キーボードのニーモニックを使用してラベルにフォーカスを設定しようとするたびに、ラベルはタブオーダーの次のコントロールに焦点を設定します。
これは、テキストボックスとコンボボックスで使用することを目的としています。これらのコンボボックスは、ラベルを表示するための組み込み機能がありません(チェックボックスとオプションボタンコントロールとは対照的です)。これらのコントロールのニーモニックをセットアップするには、ラベルの隣にラベルを配置し、ニーモニックを設定し、タブ注文のテキストボックスの前に来ることを確認します。そうすれば、ユーザーがラベルのキーボードニーモニックをアクティブにすると、テキストボックスコントロールにフォーカスを自動的に設定します。あなたはこれをWindowsのあちこちで見ました:
さて、必要な場合は、チェックボックスコントロールでまったく同じことをすることができます(なぜあなたが望むのか本当にわかりませんが)。ラベルのニーモニックを設定します(&Visible
)、次に、操作したいチェックボックスの横にラベルを配置します。 使用 TabIndex
Visual Studio IDEの構成オプション ラベルにタブインデックスがあることを確認します n, 、チェックボックス制御にはタブインデックスがあります n+1.
オーバーライドする必要はありません ProcessCmdKey
または他の何かが難しいもの。
他のヒント
次のコードパーツを参照するように確認できます。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
// look for the expected key
if (keyData == Keys.Alt && keyData == Keys.V)
{
checkBox1.Checked = true;
return true;
}
else
{
checkBox1.Checked = false;
return false;
}
}