2016-12-23 10 views
0

私はForm_keyDownイベントとKeyPreview = trueを使用しているフォームを持っています。 Iがtextboxイベントの発生に(すなわちC、P、B、U、T、W及びX)キーを押したときフォームkeydownイベントは、テキストボックスの作業を中断します。keypressイベントC#

コードは

private void MainForm_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.C) 
      button2_Click(sender, e); 
     if (e.KeyCode == Keys.P) 
      button3_Click(sender, e); 
     if (e.KeyCode == Keys.B) 
      button4_Click(sender, e); 
     if (e.KeyCode == Keys.U) 
      button5_Click(sender, e); 
     if (e.KeyCode == Keys.T) 
      button6_Click(sender, e); 
     if (e.KeyCode == Keys.W) 
      button7_Click(sender, e); 
     if (e.KeyCode == Keys.X) 
      button8_Click(sender, e); 
    } 

を以下のようであるが。必要なのは、Form_keyDownイベントからTextBoxをスキップすることです。これは可能ですか?

ファンクションキーはすでに使用されており、ユーザーはaltまたはctrlを使用したくないです。

form_keyDownイベントから離れていて、textBox KeyPressの動作が異なっていますか? (送信者がテキストボックスがある)場合

+0

試し 'e.Handled =真;' –

+0

や '((送信者がフォームです)!)場合は{e.Handled =はtrue。戻る; } ' –

+0

@EhsanSajjad私のケースでは、Senderは常に「フォーム」です。したがって、これらのコードは動作しません – Sourav

答えて

1
private void MainForm_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (ActiveControl.Name!="textBox20") 
     { 
      if (e.KeyCode == Keys.C) 
       button2_Click(sender, e); 
      if (e.KeyCode == Keys.P) 
       button3_Click(sender, e); 
      if (e.KeyCode == Keys.B) 
       button4_Click(sender, e); 
      if (e.KeyCode == Keys.U) 
       button5_Click(sender, e); 
      if (e.KeyCode == Keys.T) 
       button6_Click(sender, e); 
      if (e.KeyCode == Keys.W) 
       button7_Click(sender, e); 
      if (e.KeyCode == Keys.X) 
       button8_Click(sender, e); 
     } 
    } 
関連する問題