没有图片,没有代码,不容易说明问题。对于那些感兴趣的人,我制作了一个示例 C#/WPF 项目,可以从 http://rapidshare.com/files/461745095/02.WPFControlEvents.rar 下载。
这是一个非常小的项目 (45KB)。问题如下(对歪曲的描述深表歉意):
一个“奇特”(而且相当丑陋)的按钮包含一个堆栈面板,它又包含 1.) 标签,2.) Canvas ,3.) 两 (2) 个同心椭圆,全部从左到右排列。
堆栈面板有一个 MouseEnter 和一个 MouseLeave 事件处理程序,它会在标题栏中显示一条消息,指示鼠标是在堆栈面板上方还是外部。
问题是:当鼠标在标签上(依次包含在堆栈面板中)时,鼠标被(正确地)报告为在堆栈面板上。当鼠标移到 Canvas (它也包含在堆栈面板中)上时,鼠标被(错误地?)报告为不在堆栈面板上,但是当鼠标稍微移动到右侧(在 Canvas 上的两个椭圆上方),报告鼠标再次位于堆栈面板上。
为什么当鼠标在 Canvas 上时,它被报告为不在堆栈面板上,但当鼠标在椭圆(绘制在 Canvas 上)上时,它被报告为在堆栈面板上?。
感谢您阐明问题,
约翰。
最佳答案
您可能需要将 Canvas 的背景设置为透明。这将使其成为“可测试的”并报告鼠标悬停事件。
可以找到更多信息 here , 但默认情况下 Canvas 的背景为空。
关于c# - WPF 中的 MouseEnter 和 MouseLeave 处理(使用 VS2008 和 .net 3.5)未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5952905/