2010-10-28 103 views
8

我在wpf窗口中有一個窗體窗體,當我單擊窗體窗體時,我試圖使用DragMove,這是一個圖片框,所以我想能夠拖動窗口通過點擊圖片。WPF強制MouseDevice被按下

我趕上我的窗體的鼠標下來,並與提高WPF窗口的MouseLeftButtonDown事件:

if (e.Button == MouseButtons.Left) 
{ 
    MouseDevice mouseDev = InputManager.Current.PrimaryMouseDevice; 
    MouseButtonEventArgs mouseEvent = new MouseButtonEventArgs(mouseDev, 0, MouseButton.Left) 
     { 
      RoutedEvent = MouseLeftButtonDownEvent 
     }; 
    RaiseEvent(mouseEvent); 
} 

然而,每當我從我的處理程序(或我的窗體的MouseMove處理程序)檢查InputManager.Current.PrimaryMouseDevice的LeftButton的狀態是「釋放」。

這是爲什麼?由於所有屬性都是隻讀的,我無法想出強制它被「按下」的方法。

或者是我的方法只是錯誤的,是不可能的?我也嘗試在鼠標移動時設置我的窗口的位置,但是一些奇怪的東西發生在我的鼠標值繼續回到先前位置的地方。

謝謝!

編輯:所以我手動調整窗口的位置,但仍然希望有人可以啓發我爲什麼MouseDevice不被按下在窗體上。 「奇怪的東西發生......」只是一個愚蠢的錯誤,我一直在重新設置鼠標移動的鼠標座標,但意識到我的鼠標從不會相對於窗口移動,因爲窗口也在移動,呵呵!

回答

1

A similar issue難倒了我一段時間:MouseButtonEventArgs的ButtonState屬性反映該按鈕的實時狀態,而不是事件引發時的狀態快照。我想知道你訪問LeftButton的狀態是否也是如此。

希望這有助於

+0

嘛不太;因爲我是點擊+拖動,當MouseDown事件被擊中時,活動狀態應該仍然是「按下」,但是它沒有被按下。也許它與Windows窗體有關。當我在表單外單擊時,它會告訴我鼠標被按下,但是如果我單擊表單內部,則不會。 – mmod 2010-10-28 19:02:30