我在画布上画了椭圆,我在画布上注册了一个MouseLeftButtonUp,我想得到椭圆被点击使用:
(Ellipse)e.Source
字符串但是e.Source总是画布,我也试过e.OriginalSource,也用PreviewMouseLeftButtonUp做了同样的事情,但结果仍然一样。事件参数为MouseButtonEventArgs。我做错了什么?也有一种方法来检查是否有一个画布的子元素在一个特定的点。
pb3s4cty1#
使用e.OriginalSource。
e.OriginalSource
xurqigkl2#
您可能需要PreviewMouseLeftButtonUp,而不是MouseLeftButtonUp。此外,您可能需要使用Ellipse.PreviewMouseLeftButtonUp注册事件,而不是Canvas上的MouseUp事件。大概是这样的:
<Canvas ... Ellipse.PreviewMouseLeftButtonUp="MyHandler" />
字符串正如H.B.提到的,你想使用e.OriginalSource,而不是e.Source。编辑:误读问题,编辑更改为预览鼠标 * 左键 * 向上
kfgdxczn3#
我刚刚遇到这个问题,这是第一个弹出的答案。它在MouseLeftButtonDown上工作,但在MouseLeftButtonUp上不工作。这是因为我在MouseDown处理程序中捕获鼠标时犯了一个逻辑错误。MouseUp事件仅在捕获元素时触发。在我的MouseLeftButtonDown处理程序中有以下行:
MouseLeftButtonDown
MouseLeftButtonUp
MouseDown
MouseUp
((FrameworkElement) sender).CaptureMouse();
字符串将其更改为以下内容解决了问题:
((FrameworkElement) e.OriginalSource).CaptureMouse();
型
3条答案
按热度按时间pb3s4cty1#
使用
e.OriginalSource
。xurqigkl2#
您可能需要PreviewMouseLeftButtonUp,而不是MouseLeftButtonUp。此外,您可能需要使用Ellipse.PreviewMouseLeftButtonUp注册事件,而不是Canvas上的MouseUp事件。大概是这样的:
字符串
正如H.B.提到的,你想使用e.OriginalSource,而不是e.Source。
编辑:误读问题,编辑更改为预览鼠标 * 左键 * 向上
kfgdxczn3#
我刚刚遇到这个问题,这是第一个弹出的答案。它在
MouseLeftButtonDown
上工作,但在MouseLeftButtonUp
上不工作。这是因为我在MouseDown
处理程序中捕获鼠标时犯了一个逻辑错误。MouseUp
事件仅在捕获元素时触发。在我的
MouseLeftButtonDown
处理程序中有以下行:字符串
将其更改为以下内容解决了问题:
型