WPF:检查mouseleftbuttondown处理程序中的鼠标移动和光标位置

时间:2010-08-21 21:51:02

标签: wpf

我正在努力恢复我的wpf c#app中的aero snap功能,该功能在将resize设置为none时丢失了。我的窗口顶部有一个矩形,我在其mouseleftbuttondown事件中添加了代码。

我想检查单击矩形时鼠标是否已移动,这样我就可以使用代码取消窗口的最大化。

我的问题的第二部分是如何跟踪光标是在屏幕的顶部,左侧还是右侧,这样我就可以为窗口运行代码以最大化或者像空气一样对齐屏幕的左侧或右侧卡扣。

谢谢,

1 个答案:

答案 0 :(得分:4)

对于你的第一期,我相信你必须以相反的方式去做。也就是说,有一个MouseMove处理程序来检查鼠标左键是否已关闭然后执行您需要的操作。您应该预览鼠标左键以跟踪它首先被点击的位置和位置。

寻找drag and drop tutorials,看看他们是如何启动扯皮的灵感。


对于第二个问题,您可以使用PointToScreen()Mouse.GetPosition()来获取相对于屏幕的当前位置。然后使用此选项与SystemParameters.PrimaryScreenWidthSystemParameters.PrimaryScreenHeight属性的实际屏幕边界进行比较。

var pos = this.PointToScreen(Mouse.GetPosition(this)); //position relative to screen
if (pos.X == 0) //on the left
    //...
else if (pos.X == SystemParameters.PrimaryScreenWidth-1) //on the right (goes from 0 to (width-1))
    //...