WPF MouseButtonEventArgs时间戳值为负数

本文关键字:MouseButtonEventArgs 时间戳 WPF | 更新日期: 2023-09-27 18:24:36

我有一些用于检查双击的WPF触发器的代码:

private void HandleButtonUp(object sender, MouseButtonEventArgs mouseEventArgs)
    {
        if (mouseEventArgs.ChangedButton == MouseButton.Left &&
            (mouseEventArgs.Timestamp - _lastClick) < SystemInfo.DoubleClickTime)
        {
            this.InvokeActions(mouseEventArgs);
            _lastClick = 0; // Require 2 clicks again
        }
        else 
            _lastClick = mouseEventArgs.Timestamp;
    }

到目前为止,这一直很有效。但今天,突然间,一次点击就调用了这个动作。当我检查代码时,我发现时间戳值为,这导致它总是小于SystemInfo.DoubleClickTime(500是我的设置值)。

这正常吗?为什么情况突然发生了变化?

WPF MouseButtonEventArgs时间戳值为负数

InputEventArgs.Timestamp属性的行为与Environment.TickCount类似,您可以在其中找到以下备注:

此属性的值源自系统计时器,为存储为32位带符号整数。因此,如果系统运行TickCount将连续从零递增到Int32.MaxValue大约24.9天,然后跳到Int32.MinValue,这是一个负数,然后在接下来的24.9中递增回零天。

TickCount与Ticks属性不同,后者是自0001年1月1日凌晨12点起经过的100纳秒间隔。

使用DateTime.Now属性获取当前本地日期和时间。

忽略跳跃发生时的罕见情况(24.9天后,然后每49.7天),您可以这样检查:

Math.Abs(mouseEventArgs.Timestamp - _lastClick) < SystemInfo.DoubleClickTime
相关文章:
  • 没有找到相关文章