C# WPF强制鼠标钳被按下

C# WPF强制鼠标钳被按下,c#,wpf,winforms,xaml,window,C#,Wpf,Winforms,Xaml,Window,我在wpf窗口中有一个windows窗体,我正在尝试使用DragMove当我单击windows窗体时,它是一个picturebox,因此我希望能够通过单击图片来拖动窗口 我按下窗体的鼠标,并使用以下命令启动wpf窗口的mouseleftbuttondown事件: if (e.Button == MouseButtons.Left) { MouseDevice mouseDev = InputManager.Current.PrimaryMouseDevice; MouseButt

我在wpf窗口中有一个windows窗体,我正在尝试使用
DragMove
当我单击windows窗体时,它是一个picturebox,因此我希望能够通过单击图片来拖动窗口

我按下窗体的鼠标,并使用以下命令启动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不会在windows窗体上被按下。“奇怪的事情发生了…”对我来说只是一个愚蠢的错误,我一直在重置鼠标移动时的鼠标坐标,但意识到我的鼠标从未相对于窗口移动,因为窗口也在移动,duh

MouseButtonEventArgs的ButtonState属性反映了该按钮的实时状态,而不是引发事件时拍摄的状态快照。我不知道你访问LeftButton的状态时是否也是这样

希望这有帮助,

不太好;由于我正在单击并拖动鼠标,所以当鼠标向下事件被点击时,活动状态应该仍然处于“按下”状态,但是它没有被按下。也许这与windows窗体有关。当我在窗体外部单击时,它会告诉我鼠标被按下,但是如果我在窗体内部单击,它不会。