2010-10-28 104 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