2016-04-25 2 views
-1

キーボードのボタン(できれば "ESC")をバインドして、メソッド内で実行されているコードを停止しようとしています。しかし、実際のボタンでのみ動作します。これをバイパスするためにラベルが押されても機能するのですか?キーボードのキーをラベルにバインドする方法

 private void label1_Click(object sender, EventArgs e) 
     { 

      if (e.Control && e.KeyCode.ToString() == "ESC") 
      { 
       MessageBox.Show("This does now work"); 
      } 
} 

Error

私はVisual StudioのGUIがそれを提供doesntのそのわずかということが可能であることをどこかで読んだが、あなたは何とかコードでそれを行うことができ、これは本当ですか?

+0

ラベルをフォーカス可能にしようとしましたか? –

+1

これは間違ったイベントハンドラです。代わりにkeydownイベントハンドラを試してください。 –

+0

私は問題はラベルがフォーカスを取っていないと思うので、keydown cantはそれに行きます...しかし、そうでなければ、フォーカスが別の要素にあるので、どのコントロールがフォーカスを取るかチェックしましたか? –

答えて

0

あなたは何をしようとしているのですか?どのコントロールにフォーカスがあるかにかかわらず、フォーカスがフォームにあるときにEscapeキーが押されると、次のようになります。これをフォーム(もちろんコード)に追加するだけです。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == (Keys.Escape)) 
    { 
     MessageBox.Show("This works"); 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
+0

ソフトウェアをコードの実行を停止させようとしていますが、私はESCを押してタイピングをやめさせたいと思っています。 –

+0

提供したコードに対応する問題を解決するサンプルコードを提供しました。さらに何を行う必要があるかを指定するアプリケーションに関する追加情報を提供していませんでした。 – user34660

関連する問題