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

标签 c# wpf mouse cursor-position

我正在使用一个 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/

相关文章:

wpf - 按钮上的 IsMouseOver 属性不起作用

c# - 通过句柄托管 Win32、WinForms 或 WPF 窗口?

JavaFX 鼠标位置

Java linux 如何 move 鼠标光标

javascript - Paul Irish,他是怎么做到的?

c# - Basic Booksleeve 加 Protobuf-net 加 Lists/SortedSets,实现?

c# - 如何改变 stub 的行为?

c# - WPF按钮命令模式:Interpret to UML diagram to show actors

c# - mongodb $lookup + 正则表达式

c# - 我如何在带有 swig 的 C# 中使用 C++11 风格的回调