2016-10-20 10 views
-3

사용자가 키보드의 오른쪽 화살표 키를 눌러 그것을 집어 올 때까지의 시간 (초)을 측정하고자합니다.C# 키보드 키 입력과 키 입력 사이의 간격 측정?

나는 이것에 대해 조사하고 일부 페이지를 찾았지만 좋은 대답은 아닙니다.

어떻게이 시간을 측정 할 수 있습니까?

내 코드

나는 클래스의 상단에 목록을 정의 : 사용자 키를 눌러 오른쪽 화살표

List<int> date_down = new List<int>(); 

키 (Form_KeyDown 방법에서)

if (Keyboard.IsKeyDown(Key.Right)) 
{ 
    date_down.Add(DateTime.Now.Second); 
} 

사용자를 눌러 오른쪽 화살표 키 및 길게 누른 시간 목록에 추가

사용자가 키를 가져올 때 (Form_keyUp meth OD)

if (e.Key == Key.Right) 
{ 
    var second = DateTime.Now.Second - date_down[0]; 
} 
+1

포함시킬 수있는 코드 또는 구체적인 예를 할 수있다? 해결하려는 문제에 대해 더 구체적으로 설명 할 수 있습니까? 앱에서 키로거와 같이 기기 전체에서이를 측정하고 싶습니까? 게임 상황이나 비즈니스 앱 중 하나입니까? –

+0

keydown에서 stop watch를 시작하고, keyup에서 stop watch를 시작하십시오. 차이를 계산하십시오. – dman2306

+0

@NicholausLawson 제 코드를 씁니다. 나는 영화를 앞으로 또는 뒤로 이동하기 위해 이것을 사용하고 싶다. – saedbfd

답변

-1

당신은 this one으로, C#으로 시간을 측정하기위한 다양한 클래스를 찾고 시작할 수 있습니다.

또한 키 다운 및 키 업을 감지하는 클래스가 필요합니다. Perhaps this might help.

이 외에도 구현이 매우 간단해야합니다. 키를 눌렀을 때 타이머를 시작하고, 키를 놓을 때 타이머를 멈추고, 그 시간을 두 이벤트 사이의 측정으로 사용하십시오.

+0

감사합니다.하지만 타이머를 시작하고 중지하고 시간을 측정하는 방법은 무엇입니까? 샘플 코드 있으십니까? – saedbfd

+0

@saedbfd 편집을 보았습니다. List.Add 메서드는 시작 부분이 아닌 목록의 * end * 값을 추가합니다. 따라서 현재 구현에서는 키를 올릴 때마다 키를 눌렀을 때와 처음 비교했을 때를 비교합니다. – DBPriGuy

+0

감사합니다. 스톱워치를 사용하고 시간을 측정 할 수 있습니다. – saedbfd

0

코드가 제대로 작동하려면 코드를 약간 변경해야 할 수도 있지만 코드를 시작하는 것이 좋습니다.

원하는 경우 현재 시간을 잡고 평가하는 대신 타이머를 트리거 할 수 있습니다.

+0

이 답변 코드는 의도 한 대로만 작동합니다. – DBPriGuy

4

이 지금까지 시도 것의 대안

using System.Diagnostics; 
using System.Windows.Forms; 

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 

     var watch = new Stopwatch(); 
     KeyDown += (s, e) => watch.Start(); 
     KeyUp += (s, e) => { 
      watch.Stop(); 
      var elapsed = watch.ElapsedMilliseconds; // Duration 
      watch.Reset(); 
     }; 
    } 
} 
+1

이것은 가장 우수하고 가장 정확한 대안입니다! –

+1

좋은 답변입니다. 솔직히 자세한 정보가 필요하면 도움이됩니다. – DBPriGuy