2012-02-12 14 views
3

数値キーの5キーを押し続けると、KeyDownイベントハンドラーでステートメントを実行し続けます。私がキーを押したままにしても、ステートメントが一度だけ実行されるようにするにはどうすればよいですか?キーが押されて保持されたときに確実にステートメントが実行されます。

ご協力いただきありがとうございます。

private void form_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.NumPad5) 
    { 
     dados.enviar("f"); //I want this to run only once! 
    } 
} 

答えて

6

あなたはダウンキーにフラグを設定し、キーアップ時にそれをリセットすることができます。

private bool isPressed = false; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if(e.KeyCode == Keys.B && !isPressed) 
     { 
      isPressed = true; 
      // do work 
     } 
    } 

    private void Form1_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (isPressed) 
      isPressed = false; 
    } 
+0

どうすればいいですか? – FredVaz

+0

コードサンプルで更新しました。 –

+0

オフコース! ...ありがとう! :) – FredVaz

2
bool alreadyPressed = false; 
... 

if (e.KeyCode == Keys.NumPad5 && ! alreadyPressed) 
{ 
    alreadyPressed = true; 
    ... 
+0

シンプル! OK ...ありがとう:) – FredVaz

関連する問題