在按下鼠标按钮后检查时间,然后再按上鼠标按钮

本文关键字:按钮 鼠标 然后 检查 时间 | 更新日期: 2023-09-27 18:04:19

我想这一定是一个小问题,但是我想不清楚是怎么回事。有人有主意吗?

我在画布上有一些边界(充满图像),我想点击边界(我用OnMouseLeftButtonDown这样做),边界变成红色(这样用户就知道他点击了哪个对象),然后,1或2秒后,当鼠标按钮仍然按下,拖放应该开始。

起初我在按钮内部有边框,但是clickevent似乎与dragevent冲突。所以我去掉了按钮,直接处理边框内的所有内容,效果也很好。但是我怎么才能在按下鼠标按钮后开始拖动,并在时间用完之前按下鼠标按钮时停止拖动呢?

谁有一个干净的解决方案?

在按下鼠标按钮后检查时间,然后再按上鼠标按钮

private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    _source = sender as Border;
    Mouse.Capture(_source);
}
private void OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    _source = null;
    Mouse.Capture(null);
}

和在事件OnMouseMove中,你可以根据鼠标位置修改边框边距,但在检查_source是否为边框类型之后。

var position = e.GetPosition(Canvas);

编辑:此时,你可以添加stopwatch_watch属性,并在OnMouseLeftButtonDown事件处理程序中,你可以这样做:

_watch = Stopwatch.StartNew();
在OnMouseLeftButtonUp:

_watch.Stop();

和OnMouseMove在你的代码之前:

while (_watch.ElapsedMilliseconds < 2000 && _watch.IsRunning)
{
    Thread.Sleep(100);
}