c# - WPF 中的 MouseEnter 和 MouseLeave 处理(使用 VS2008 和 .net 3.5)未按预期工作

标签 c# .net wpf routed-events

没有图片,没有代码,不容易说明问题。对于那些感兴趣的人,我制作了一个示例 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/

相关文章:

c# - 如何剖析文本框是否被单击或点击 Windows 8

c# - Thread.SetAffinity 和 Threading via XNA 在 Xbox 360 上的问题

c# - 在 XAML 中重用路径对象

.NET Framework 对多核硬件的支持

WPF 水平滚动条不可见

c# - MVVM中的模型

c# - 使用 EPPlus 和 Linq 从 Excel 获取单元格值

c# - 十进制值的正则表达式

c# - 返回用户所属的所有 Active Directory 应用程序组的列表

c# - 将 PDF 从内存加载到 telerik :RadPdfViewer