2010-08-21 113 views
0

我正在恢复我的wpf c#应用程序中的aero snap功能,该功能在将调整大小设置为none时丢失了。我在我的窗口顶部有一个矩形,其中我向其mouseleftbuttondown事件添加了代码。WPF:检查鼠标移动和光标在mouseleftbuttondown处理程序中的位置

我想检查当鼠标点击矩形时鼠标是否移动,这样我就可以使用代码去除最大化窗口。

我的问题的第二部分是如何跟踪光标是在屏幕的顶部,左侧还是右侧,以便我可以运行窗口的代码以最大化或对齐屏幕的左侧或右侧航空快照。

感谢,

回答

3

为了您的第一个问题,我相信你会一个人做它的其他方式。也就是说,有一个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)) 
    //... 
+0

我做了一个鼠标移动事件处理程序,如果按下mouselftbutton但是当我点击并拖动矩形 – internetmw 2010-08-21 22:24:53

+0

另外,mousebutton被释放时你点到屏幕上的代码只运行代码永远不会运行,检查... – internetmw 2010-08-21 22:34:12

+0

我猜你还需要使用'Mouse.Capture()'来捕获鼠标。点击时捕获并在发布时取消捕获。你的情况可能比这更多,但应该一般工作。 – 2010-08-21 23:03:21