2016-11-29 16 views
0

ボタンにフォーカスがある間、ユーザーがキーボードの上矢印を押しているときに捕捉する必要があります。私はボタンのKeyUpイベントを処理するためにこのコードを書いています:フォーカスがボタン上にあるときにキーボードの上矢印を処理する

private void btnValider_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Up) 
    { 
     //do stuff 
    } 
} 

しかし、この機能は上矢印キーを押して処理しませんでした。

私がしたいことが可能か、フォームからこのイベントを処理する必要があるかどうかわかりません。

+0

を示唆したように、 '真PreviewKey =を追加;'初期化されている間。 'void meForm_KeyUp(object sender、KeyEventArgs e){if(btnValidaer.HasFocus){/ * logic here * /}}'のようなフォームで入力を確認することもできますし、 'IMessageFilter'インターフェースを追加することもできますし、 'WndProc(ref Message msg)'メソッド –

+2

'' KeyUp':についてのドキュメントを参照してください(https://msdn.microsoft.com/en-us/library/system.windows.forms.control.keyup(v = vs .110).aspx) - _ "TAB、RETURN、ESC、**矢印キーなどの特定のキーは、コントロールによって自動的に処理されます。これらのキーでKeyUpイベントを発生させるには、あなたのフォーム上の各コントロール。IsInputKeyのオーバーライドのコードは、特殊キーの1つが押されているかどうかを判断し、trueの値を返さなければなりません "# – stuartd

+0

@ m.rogalski PreviewKeyはFormでのみ利用でき、矢印キーをキャッチするのに役立ちます – Kodre

答えて

1

Hans Passantは、フォームでは、

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    { 
     if (keyData == Keys.Up && btnValider.Focused) 
     { 
      MessageBox.Show("hit"); 

      return true; 
     } 
     else 
      return base.ProcessCmdKey(ref msg, keyData); 
    } 
+1

'&& btnValider.Focused'を追加する義務はありません。 'if(keyData == Keys.Up)'で十分です。私はそれをテストした。 – ucef

-1

ボタンのキーダウンイベントを処理します。

+0

同じ問題:_ "TAB、RETURN、ESC、および矢印キーなどの特定のキーは、コントロールによって自動的に処理されます。これらのキーに** KeyDownイベント**を発生させるには..." – stuartd

関連する問題