在 mousebuttonup 之前检查 mousebuttondown 之后的时间
Check time after a mousebuttondown before the mousebuttonup
我想这应该只是一个小问题,但我想不明白。有人有想法吗?
我在 canvas 上有一些边框(充满图像),我想单击边框(我使用 OnMouseLeftButtonDown 执行此操作),边框变红(这样用户可以确定是哪个对象他点击了)然后,在 1 或 2 秒后,当鼠标按钮仍被按下时,应该开始拖放。
一开始我是按钮里面有边框,但是clickevent好像和dragevent冲突了。所以我摆脱了按钮,直接在边框内完成所有操作,效果也很好。但是如何在 mousebuttondown 之后开始拖动并在时间用完之前发生 mousebuttonup 时停止拖动。
有人想出一个干净的解决方案吗?
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);
}
我想这应该只是一个小问题,但我想不明白。有人有想法吗?
我在 canvas 上有一些边框(充满图像),我想单击边框(我使用 OnMouseLeftButtonDown 执行此操作),边框变红(这样用户可以确定是哪个对象他点击了)然后,在 1 或 2 秒后,当鼠标按钮仍被按下时,应该开始拖放。
一开始我是按钮里面有边框,但是clickevent好像和dragevent冲突了。所以我摆脱了按钮,直接在边框内完成所有操作,效果也很好。但是如何在 mousebuttondown 之后开始拖动并在时间用完之前发生 mousebuttonup 时停止拖动。
有人想出一个干净的解决方案吗?
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);
}