wpf - 透明的MainWindow和DragMove的问题“只能在主鼠标按钮关闭时调用DragMove。”

时间:2010-10-06 20:51:47

标签: transparency mainwindow mouseleftbuttondown

我有一个使用透明窗口的wpf项目,我为我的对话框窗口和我的mainwindow共享这个透明窗口样式。

我关闭了一个使用相同窗口样式的对话窗口后DragMove() MainWindow事件的错误。为了使这更加奇怪,只有当我在mouseleftbutton Status Bar的标签上处理MainWindow事件时才会发生此异常。如果我换出按钮的标签并将mouseleftbuttondown替换为click事件,我就不会收到错误。

奇怪的是,弹出的对话框窗口没有实现dragmove,我也没有拖动mainwindow。在dragmove调用后,我的代码执行返回mainwindow后,以某种方式调用showdialog()

目前我的一个简单方法就是将我的标签换成按钮并改为点击事件。

然而,我更感兴趣的是听到导致这个问题的原因以及为什么点击事件会起作用,但鼠标会失败。

我的“StatusBar”只是一个带有标签和其他stackpanel(包含更多标签)的stackpanel

有没有其他人之前打过这个问题?我是否需要实现某种mouseclick事件处理程序覆盖,以便我可以捕获并取消发生此异常?

如果需要,可以提供Repro代码。我在dragmove得到了足够的点击,所以我希望这对那里的人来说很容易。

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

我的大脑今天不能正常工作。在这种情况下,我忘记了事件的路由。我只需要在我的routedevent上设置Handled属性,该属性在鼠标按钮关闭时触发。不知怎的,在发布帖子之前我在调试器中错过了。

答案 1 :(得分:1)

使无边框窗口可移动的“正确”方法 - > https://stackoverflow.com/a/3275712/146032

确保只在事件MouseLeftButtonDown触发时调用DragMove,并且不要忘记使用e.Handled = true处理事件;

答案 2 :(得分:0)

如果在消息框显示完成时收到此异常。放置Dragemove(); 在里面尝试并清空陷阱。