按下鼠标按钮时不会触发WPF鼠标悬停

时间:2015-01-16 13:14:18

标签: drag-and-drop mouseenter mousedown

简而言之:如果鼠标进入WPF窗口时按下任何鼠标按钮,则无论鼠标是否被任何进程捕获,都会忽略所有鼠标事件。

挑战

创建两个WPF 4.5项目。在第一个中,添加一个带有MouseDown处理程序的Border。在该处理程序内部,执行您可以想到的所有内容以释放鼠标捕获:

        this.ReleaseMouseCapture();
        element.ReleaseMouseCapture(); // "sender" 

        Mouse.Capture(null);

        while (Mouse.Captured != null)
            Mouse.Captured.ReleaseMouseCapture(); 

        ReleaseCapture(); //Win32.ReleaseCapture()

在另一个项目中,将MouseEnter处理程序添加到将更改其背景的默认网格。

启动它们,边框上的MouseDown和"拖动"到另一个窗口。在释放鼠标按钮之前,第二个窗口的背景不会改变。

真正令人烦恼的是,如果你留在第一个窗口内,那么“尝试取消”"鼠标似乎工作。使用MouseEnter处理程序在第一个窗口中添加另一个元素,它将正常启动。这意味着WPF不了解或关心跨进程捕获。当鼠标首次进入应用程序时,如果任何鼠标按钮处于“按下”状态,它就会忽略事件。

任何人都知道在输入鼠标之前是否可以让WPF元素响应鼠标事件?

0 个答案:

没有答案