2010-10-06 51 views
2

我有一个使用透明窗口的WPF项目,我共享这个透明的窗口样式为我的对话窗口和我的mainwindowwpf - 透明的MainWindow和DragMove的问题“只能在主鼠标按钮关闭时调用DragMove。”

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

奇怪的是,弹出的对话窗口没有实现dragmove,我也没有拖动我的mainwindow。在调用showdialog()之后,我的代码执行返回mainwindow后,不知何故dragmove被调用。

对我来说,目前的一个简单解决方法是将我的标签换成按钮并改为点击事件。

但是,我更感兴趣的是听到这个问题是什么原因以及为什么click事件可以工作,但鼠标失败了。

我的“StatusBar”只是一个stackpanel与标签和其他堆栈面板(其中包含更多的标签)。

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

如果需要可以提供重新编码。我在dragmove这里获得了足够的点击率,所以我希望这对某个人来说很容易。

在此先感谢您的帮助!

回答

3

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

1

“正确”的方法,使一个无国界的窗口活动 - >https://stackoverflow.com/a/3275712/146032

确保当事件MouseLeftButtonDown触发只能调用DragMove,不要忘记来处理使用e.Handled事件= TRUE;

+0

这是一个很好的链接,但它与我的问题没有任何关系。我发生了一场失控的泡沫事件,它把所有的事情都扔出去了。我弹出的对话框甚至没有实现dragmove,所以没有办法拖动它。 – TWood 2012-03-08 15:39:10