如何限制基于WPF的应用程序中的光标移动?

时间:2009-05-12 02:46:31

标签: c# wpf mouse cursor-position

我正在使用WPF应用程序,更具体地说是一个带有可拖动元素的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),我将监视鼠标的移动,所以最坏的情况是,我可以手动检查鼠标的位置并将其限制在画布上,但这看起来有点难看。 / p>

任何人都有更好的方法来限制游标边界吗?

2 个答案:

答案 0 :(得分:3)

There's no clean way to do this以及不那么干净的方法会使鼠标光标"jitter" at the border of the clipping area

而且,我怀疑这是不是一个好主意。用户应该拥有鼠标,当你试图人为地限制他或她拥有的东西时,他或她通常会感到沮丧。

如果您想在鼠标离开画布时提供反馈,也许您可​​以在鼠标按钮仍然按下时将项目拖动沿边框卡住?这将告诉用户他或她已离开目标区域而不试图对鼠标可以去的地方施加限制。

祝你好运!

答案 1 :(得分:1)

您应该可以使用ClipCursor原生API。