2012-02-12 2 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

심플! 확인 ... 감사합니다 :) – FredVaz

관련 문제