gpt4 book ai didi

c# - 在 WPF 中,如何在 Canvas 上捕获鼠标并仍然找到光标悬停在什么控件上?

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:12 24 4
gpt4 key购买 nike

我有一个自定义 Canvas 控件(继承自 Canvas)覆盖在大面积的用户控件上。这个想法是在用户控件之间绘制路径(即连接线)。

为了捕捉鼠标移动,我在 MouseDown 上调用了 Mouse.Capture(theCanvas)。这很好用,但是 Canvas 下的用户控件显然不再接收鼠标事件。 Mouse.DirectlyOver 始终显示 Canvas ,因此我无法通过查看当前位置并查看哪个用户控件已结束来伪造它。

所以,我仍然需要 Canvas 来绘制路径,但是我该如何通过以下方式之一解决这个问题:

  1. 查看 Canvas 下方最上面的控件是什么?
  2. 获取此 MouseDown -> Track MouseMoves -> MouseUp 工作流以在没有鼠标捕获的情况下在 Canvas 上工作?

欢迎任何其他想法...

最佳答案

我同意这是您的两个选择。如果您只想将一些点击转发给您的用户控件,请使用选项 1,并点击测试 Canvas 下的控件。

如果您需要您的用户控件表现得好像没有任何东西覆盖它们(文本框、按钮等),那么我建议使用 PreviewMouseMove用户控件父级上的事件,因为它可以在控件到达事件之前拾取并可选地“处理”事件,但如果您未将 handled 设置为 true,它不会阻止该事件

关于c# - 在 WPF 中,如何在 Canvas 上捕获鼠标并仍然找到光标悬停在什么控件上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4235310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com