C#WPF - 即使鼠标移动到子控件上,也会触发Canvas MouseMove事件

时间:2018-06-04 02:08:52

标签: wpf events canvas mousemove onmousemove

如何使Canvas MouseMove事件仅在我的鼠标位于CanvasCanvas之上时触发?

我有一个TextBox作为Canvas的孩子,当我的鼠标移过那个TextBox时它仍会触发,我希望这不会发生,它应该只会触发例如,当鼠标移动到Canvas背景/空格区域时。

2 个答案:

答案 0 :(得分:1)

您必须在画布PreviewMouseMove上收听该事件的预览版本并设置e.Handled = true。 看看这个网址 https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/routed-events-overview

答案 1 :(得分:1)

  

如何使画布class VideoDownload(FilesPipeline): def get_media_requests(self, item, info): def find_best_format(links): quality_order = [ 'mp4', 'webm', 'flv', 'ogv' ] format_links = {} for idx, link in enumerate(links): format_links[link.split('.')[-1]] = (link, idx) for format in quality_order: if format in format_links: del links[format_links[format][1]] return format_links[format][0] link = links.pop() return link if len(item['video_urls']) == 0: # all video downloads failed return None url = find_best_format(item['video_urls']) item['video_downloaded_url'] = url rq = scrapy.Request(url) rq.meta['id'] = '%s-%s' % (item['sid'], item['gid']) if 'gid' in item else item['sid'] return rq def item_completed(self, results, item, info): if len(results) == 0: return item if not results[0][0]: self.get_media_requests(item, info) # <---- I need to resend item to pipeline here return item['video_file'] = results[0][1]['path'].split('/').pop(-1) item['video_file_checksum'] = results[0][1]['checksum'] return item 事件仅在我的鼠标位于MouseMoveCanvas之上时触发?

您无法阻止事件被触发,但您可以检查鼠标是否直接位于事件处理程序中的Canvas区域上,如果不是,则不执行任何操作:

Canvas