2012-01-13 18 views
0

チェックボックスにショートカットキーを追加したいと思います。チェックボックスにはテキストがありません。私はラベルとチェックボックスを持っています。ラベルにはexのショートカットキーがあります。 &可視。だから、LabelにはショートカットキーとしてVがある。誰かがAlt + Vを押すと、chechboxは選択されていない状態に変更され、反対の方法で変更されます。テキストなしのチェックボックスにショートカットキーを追加する方法

+1

どのフレームワークを使用していますか:wpf、windows forms、gtk#、asp.net、...? – madd0

+0

あなたはこれを試しましたか? –

+0

windowsフォームフレームワーク –

答えて

2

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

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

          example of textbox with a label used as the mnemonic

をあなたがしなければならない場合さて、あなたは、チェックボックスコントロールと正確に同じことを行うことができます(私は本当にわからないけれどもなぜあなたがしたいだろうか)。ラベル(&Visible)のニーモニックを設定し、操作するチェックボックスの横にラベルを配置します。 Use the TabIndex configuration options in the Visual Studio IDEラベルにタブインデックスnがある場合、チェックボックスコントロールにはタブインデックスn + 1が含まれていることを確認してください。

ProcessCmdKeyやその他のものを無効にする必要はありません。

+0

ToolStripLabelsとToolStripCheckboxesでは機能しません。 –

1

これは次のコード部分を参照して確認することができます。

 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; 
      } 
     } 
関連する問題