MouseLeftButtonUp不会触发
我有一个Button
但问题是,与MouseLeftButtonDown不同,事件MouseLeftButtonUp不会触发。 为什么? 我该如何解决? 谢谢。
可能是因为Button
已经处理了事件,所以它不会过滤到Image控件。
为什么要在Image
上处理MoustUp和MouseDown事件? 为什么不在Button
上处理它们?
编辑
在快速查看此事件的文档之后,我看到MouseLeftButtonUp的路由策略是Direct ,但实际的基础事件是具有冒泡策略的MouseUp事件。 因此,实际上, MouseLeftButtonUp
应该具有事实上的冒泡策略,这意味着Image
应该有机会在Button
之前处理事件。
听起来像其他东西可能正在发生。 如果在Image控件上将Image设置为nothing,并且background为null(与Color.Transparent
不同),那么就鼠标事件而言,WPF会将控件视为“不存在”。
编辑2
嗯……也许我最初的猜测是正确的。 根据这个post:
https://social.msdn.microsoft.com/forums/en/wpf/thread/e231919d-9fef-4aa5-9dcb-2c1eb68df25b/#306db880-ed50-45d2-819f-88d76f7148c1
Button
正在处理MouseUp
事件。 尝试使用PreviewMouseUp然后检查以查看单击了哪个按钮。
编辑3
好的…我想我弄清楚了。 我打赌Button正在MouseDown事件中“捕获”鼠标。 发生这种情况时,其他控件将不会接收MouseUp或MouseDown事件(包括预览版本),直到释放鼠标。
请参阅: http : //books.google.com/books?id=nYl7J7z3KssC&pg=PA146#v=twopage&q&f=true
正如Cyborgx37所说,Click事件正在处理LeftMouseUp事件。
您可以在Button上使用PreviewMouseLeftButtonUp
事件而不是MouseLeftButtonUp
,如下所示:
你的Button模板只有一个Image,我猜你不需要这个Button,你可以像上面一样使用,这样你就可以捕获MouseLeftUp事件。
这种方式更容易,但这取决于您的需求。
顺便说一句,对不起我的废话英语,我希望它可以帮到你。
尝试使用事件PreviewMouseLeftButtonUp。
上述就是C#学习教程:MouseLeftButtonUp不会触发分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/991499.html