我有我訂閱的鼠標按下事件,當用戶點擊任何地方,甚至窗外的WPF窗口:的MouseDown事件停止射擊在WPF窗口
void RightClickWindow_MouseDown(object sender, MouseButtonEventArgs e)
{
try
{
base.OnMouseDown(e);
Point mousePositionInApp = Mouse.GetPosition(this);
Point mousePositionInScreenCoordinates = PointToScreen(mousePositionInApp);
if (mousePositionInScreenCoordinates.X < Left || mousePositionInScreenCoordinates.X > Left + Width || mousePositionInScreenCoordinates.Y < Top || mousePositionInScreenCoordinates.Y > Top + Height)
{
Close();
}
}
catch { }
}
void RightClickWindow_Activated(object sender, EventArgs e)
{
Mouse.Capture(this, CaptureMode.SubTree);
}
如果點擊越界,我解僱了窗戶。除了我試圖修復但不知道如何修復的特殊情況外,這種方法效果很好。這裏是停止工作的地方:
我在XAML中有一個簡單的WPF Button
。如果我用鼠標左鍵單擊此按鈕,並且在鼠標關閉的情況下,將光標拖出按鈕的邊界,然後釋放鼠標左鍵,這些捕獲事件不再觸發。爲什麼會這樣,我該如何修復我的代碼以適應這種特殊情況?
你的意思是他們不會在你釋放按鈕的情況下觸發,或者他們不再觸發* ever *? – furkle 2014-11-01 19:25:40
他們不再開火*永遠*。 – Alexandru 2014-11-01 19:27:15
問題是您的Window失去了它的鼠標捕捉。爲了重現您的問題,我們還有其他方法,例如嘗試將窗口內的任何元素聚焦,然後嘗試在窗口外單擊,但不會按預期方式關閉,因爲它已丟失鼠標捕獲。我認爲你不應該嘗試做這樣的事情,它的行爲是非常不可靠的。當您的窗口始終有鼠標捕獲時,您無法正常處理標題欄(無法與其交互)。首先,您必須在窗口中集中某些元素才能拖動標題欄。然後窗口失去鼠標捕獲... – 2014-11-02 01:33:09