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

WPF:在mouseleftbuttondown处理程序中检查鼠标移动和光标位置,wpf,Wpf,我正在恢复wpf c#应用程序中的aero snap功能,该功能在将“调整大小”设置为“无”时丢失。我在窗口顶部有一个矩形,我在它的mouseleftbuttondown事件中添加了代码 我想检查单击矩形时鼠标是否移动,这样我就可以使用代码取消窗口的最大化 我问题的第二部分是如何跟踪光标是在屏幕的顶部、左侧还是右侧,以便运行窗口代码以最大化或像aero snap一样对齐屏幕的左侧或右侧 谢谢,你的第一期,我相信你必须用另一种方式。也就是说,使用MouseMove处理程序检查鼠标左键是否已按下,然

我正在恢复wpf c#应用程序中的aero snap功能,该功能在将“调整大小”设置为“无”时丢失。我在窗口顶部有一个矩形,我在它的mouseleftbuttondown事件中添加了代码

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

我问题的第二部分是如何跟踪光标是在屏幕的顶部、左侧还是右侧,以便运行窗口代码以最大化或像aero snap一样对齐屏幕的左侧或右侧


谢谢,

你的第一期,我相信你必须用另一种方式。也就是说,使用
MouseMove
处理程序检查鼠标左键是否已按下,然后执行所需操作。您应该预览鼠标左键以跟踪它是否被单击以及单击的位置

寻找并看看他们是如何开始寻找灵感的


对于第二个问题,您可以使用
指向屏幕()
以及
鼠标.GetPosition()
来获取相对于屏幕的当前位置。然后使用该属性与
SystemParameters.PrimaryScreenWidth
SystemParameters.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))
    //...

对于你的第一期,我相信你必须用另一种方式。也就是说,使用
MouseMove
处理程序检查鼠标左键是否已按下,然后执行所需操作。您应该预览鼠标左键以跟踪它是否被单击以及单击的位置

寻找并看看他们是如何开始寻找灵感的


对于第二个问题,您可以使用
指向屏幕()
以及
鼠标.GetPosition()
来获取相对于屏幕的当前位置。然后使用该属性与
SystemParameters.PrimaryScreenWidth
SystemParameters.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))
    //...

我制作了一个mousemove事件处理程序,它检查是否按下了mouselftbutton,但当我单击并拖动矩形时,代码永远不会运行。我想您也需要使用
mouse.capture()
捕获鼠标。点击捕获,发布时取消捕获。在您的情况下,可能不止这些,但一般来说应该可以工作。我制作了一个mousemove事件处理程序,用于检查是否按下了mouselftbutton,但当我单击并拖动矩形时,代码永远不会运行。我想您也需要使用
mouse.capture()
捕获鼠标。点击捕获,发布时取消捕获。在你的情况下,可能不止这些,但一般来说应该是有效的。