有没有办法可以设置一个条件,按下键后如果已经过了5秒,那么将执行某个方法。
例如我在gridview中有keyup事件:
private void Grid_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
}
else
{
if (atimehasalreadypassed == 5seconds)
{
//execute
}
}
}
这个问题是计数可能在传递keyDown后开始,所以它只有1秒。 所以我需要在U.I线程/背景线程之外的一些计数......
注意:我不需要延迟,我只需要知道keyEvent后是否已经过了5秒......
答案 0 :(得分:1)
这可能就是您所需要的:
private void Grid_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
}
else
{
if (SecondsPassed(5))
{
//execute
}
}
}
private DateTime _lastCallTime = new DateTime();
private bool SecondsPassed(double seconds)
{
// calculate time difference
var timeSpan = new TimeSpan(DateTime.Now.Ticks - _lastCallTime.Ticks);
// reset timing
_lastCallTime = DateTime.Now;
if (timeSpan.TotalSeconds > seconds)
{
return true;
}
return false;
}
请注意,您可能希望初始化" _lastCallTime"手动,取决于您的使用情况。