2

我有一块图像(这些图像嵌入在边框控件中),它们排列成 4 行和 4 列。当用户从左到右或从右到左或对角线从一个图像滑动到另一个图像时,我想知道所有这些图像遍历了什么?

我找到了 MouseEnter 和 MouseLeave 事件。但是如果用户触摸 image1(在 row1 中)并将滑动拖动到 image4 离开鼠标,我怎么知道用户是否完成了滑动?因为用户在将鼠标离开 image4 后可能会触摸屏幕上的任何位置。

捕获那些遍历图像的最佳方法是什么?列表还是字典?

4

1 回答 1

1

根据这篇文章...... http://msdn.microsoft.com/en-us/library/system.windows.uielement.mouseleftbuttondown(v=vs.95).aspx

您可以使用MouseLeftButtonDown事件检测 MOUSE SWIPE STARTED IN 的哪个平铺/正方形

然后,如果用户如文章所述在不同的对象上滑动鼠标......

LeftMouseButtonUp事件将执行,尽管 LeftMouseButtonDown 不会为同一个图块执行,因为实际向下事件发生在另一个正方形/图块/图像中!

因此,如果您有一个简单的 4x4 矩阵/数组来保存 SWIPE YES/MO 值...就像 1 或 yes 鼠标通过此元素滑动而 0 NO 鼠标从未进入此图块/图像/元素...那么您应该没事的...

并使用...的古老规则。

如果 X1 > X2 则鼠标移动是从右到左(向左移动)

如果 X2 > X1 则鼠标从左向右移动(向右移动)

如果 Y1 > Y2 则鼠标移动从下到上(向上移动)

如果 Y2 > Y1 则鼠标移动是从上到下(向下移动)

并混合和匹配对角线移动/滑动的这些规则......

其中 X1,Y1 是 MouseDown 屏幕值,X2,Y2 是 MouseUp 屏幕值

编辑

根据备注部分的文字...

引用

当鼠标指针位于 UIElement 上方时按下鼠标左键(或当触控笔的笔尖接触 Tablet PC 时)会引发 MouseLeftButtonDown 事件。当释放鼠标按钮(或触控笔的笔尖)时,会引发 MouseLeftButtonUp 事件。但是,如果在释放按钮时将鼠标指针(或触控笔)移到另一个对象上,则接收 MouseLeftButtonDown 事件的 UIElement 将仅在该 UI 元素已显式捕获鼠标的情况下接收 MouseLeftButtonUp 事件。没有离散的双击事件。双击由两个 MouseLeftButtonDown 和 MouseLeftButtonUp 事件序列组成。可以使用事件数据 (ClickCount) 捕获点击计数。

使用基于 MouseButtonEventHandler 的处理程序来处理此事件。有关如何处理鼠标事件的更多信息,请参阅鼠标支持。

鼠标捕获是一个概念,即使鼠标指针(或触控笔)不再位于对象的边界区域上,对象也可以继续接收鼠标事件。为了请求鼠标捕获,鼠标左键(或触控笔)必须处于按下(向下)状态。因此,调用 CaptureMouse 的代码中的一个共同点是来自特定 UIElement 的 MouseLeftButtonDown 处理程序。有关鼠标捕获及其有用场景的更多信息,请参阅鼠标支持或如何:在 UI 布局中拖放对象。

报价结束

因此,与我的第一个解决方案相反,抱歉,我一定是误读了这些评论,尽管以 MOUSE CAPTURE 开头的第三段是一个概念....调用 mouseevent 意味着 MOUSEDOWN 事件,这将来自 ORIGINAL 控件,因此假设您从 control1 开始滑动,并且 Control1 MouseLeftButtonDown 事件触发,那么您需要捕获鼠标(有关鼠标捕获及其场景的更多信息很有用,请参阅鼠标支持或如何:在 UI 布局中拖放对象)然后如您所说,您在 control2 上滑动,当您的手指/指针/触控笔超出 control3 时,您释放鼠标,然后将触发原始捕获的 mouseup 事件,用于捕获鼠标的 CONTROL(在本例中为 control1 ) 并使用屏幕 X/Y 位置和您的控件 X/Y/Width/HEIGHT 属性,您应该能够评估 OVER 释放鼠标的控件。

如果我有更多的时间,我会更仔细地阅读它并且避免给你提供几乎正确的信息而不是正确的信息,我建议你仔细阅读这篇文章并按照鼠标捕获过程进行尝试,不要忘记当即使它可能在另一个控件上,您也可以释放鼠标,对于捕获鼠标的控件,将触发 ACTUAL mouseup 事件。

也为我之前的错误感到抱歉-这就是您跳过阅读时发生的情况。

于 2013-01-01T02:32:13.570 回答