テキストなしでチェックボックスにショートカットキーを追加する方法

StackOverflow https://stackoverflow.com/questions/8848648

質問

チェックボックスにショートカットキーを追加したい。チェックボックスにはテキストがありません。ラベルを付けて、チェックボックスをチェックします。ラベルには、Exのショートカットキーがあります。 &見える。したがって、ラベルはvをショートカットキーとして持っています。誰かがAlt+Vを押すと、Chechboxは選択されていない状態から同じように変更され、反対の方法で同じように変更する必要があります。

役に立ちましたか?

解決

ラベルコントロールは、キーボードニーモニックに関して特別です。ラベルはフォーカスを得ることができないため、キーボードのニーモニックを使用してラベルにフォーカスを設定しようとするたびに、ラベルはタブオーダーの次のコントロールに焦点を設定します。

これは、テキストボックスとコンボボックスで使用することを目的としています。これらのコンボボックスは、ラベルを表示するための組み込み機能がありません(チェックボックスとオプションボタンコントロールとは対照的です)。これらのコントロールのニーモニックをセットアップするには、ラベルの隣にラベルを配置し、ニーモニックを設定し、タブ注文のテキストボックスの前に来ることを確認します。そうすれば、ユーザーがラベルのキーボードニーモニックをアクティブにすると、テキストボックスコントロールにフォーカスを自動的に設定します。あなたはこれをWindowsのあちこちで見ました:

     example of textbox with a label used as the mnemonic

さて、必要な場合は、チェックボックスコントロールでまったく同じことをすることができます(なぜあなたが望むのか本当にわかりませんが)。ラベルのニーモニックを設定します(&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;
            }
        }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top