2010-08-21 49 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