我正在使用一个 WPF 应用程序,更具体地说是一个带有可拖动元素的 Canvas 。
拖动项目后,我想将光标移动范围限制在项目被拖动的 Canvas 内。
可以启动拖动的事件如下所示
private void WidgetCanvas_PreviewHeaderLeftMouseDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
... logic to figure out if this is a valid drag, blah blah blah ...
this.IsDragging = true;
// TODO: clip the available cursor movement to actual width of Canvas
}
在 Preview-MouseUp 上,我想简单地将光标移动“解除剪辑”,使其恢复到正常状态。
一旦我开始拖动 (PreviewMouseMove),我将监控鼠标的移动,所以最坏的情况是,我可以手动检查鼠标的位置并将其限制在 Canvas 上,但这看起来有点难看。
谁有更好的方法来限制游标边界?
最佳答案
There's no clean way to do this并且不太干净的方法会使您的鼠标光标 "jitter" at the border of the clipping area .
此外,我怀疑这是否真的是个好主意。用户应该真正拥有鼠标,当您试图人为地限制他或她拥有的东西时,他或她通常会感到沮丧。
如果您想在鼠标离开 Canvas 时提供反馈,也许您可以在鼠标按钮仍处于按下状态时让被拖动的项目卡在边框上?这会告诉用户他或她已经离开了目标区域,而不是试图对鼠标的去向施加限制。
祝你好运!
关于c# - 如何限制基于 WPF 的应用程序中的光标移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/850956/