在KeyEvent内部设置xTime on Condition



是否有一种方法可以设置一个条件,即在按下键后,如果已经经过了5秒,那么将执行某个方法。

e。我在gridview中有keyup事件:

private void Grid_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
    }
    else 
    {
        if (atimehasalreadypassed == 5seconds)
        {
           //execute
        }
    } 
}

的问题是计数可能在传递keyDown后开始,所以它将只有1秒。所以我需要一些计数外U.I线程/后台线程…

注意:我不需要延迟,我只需要知道是否5秒后已经通过keyEvent…

这可能是你需要的:

    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",这取决于您的使用。

最新更新