【问题标题】:MouseEnter and MouseLeave Event not raising in user controlMouseEnter 和 MouseLeave 事件未在用户控件中引发
【发布时间】:2011-06-20 10:33:43
【问题描述】:

问题来了:

  • 我有一个简单的 c# 表单
  • 我有一个简单的 c# 用户控件,其中包含一个图片框和其他按钮。
  • 我的表单包含一个用户控件实例。
  • 我希望当用户在图片框中执行 mouseEnter 时,鼠标光标会发生变化,而当用户在图片框中执行 mouseLeave 时,鼠标会恢复正常。

现在发生的是事件根本没有被触发。我在 MouseOver、MouseEnter、MouseMove、MouseLeave 等中设置了断点,但没有一个被触发。这是我第一次在 C# 中遇到这个问题。

我认为这与“路由事件”有关,但我无法弄清楚。如果有另一种方法来实现我正在做的事情,这也将被视为一种解决方案。重要的是,最终,用户控件将成为鼠标光标在其“领土”上的主人。

提前致谢!

【问题讨论】:

    标签: c# picturebox mouseenter


    【解决方案1】:

    您正在使用什么事件? UserController.MouseEnterUserController.MouseLeave 事件还是 PictureBox.MouseEnterPictureBox.MouseLeave 事件?

    您应该使用后者,因为如果鼠标直接通过PictureBox 进入用户控制器,PictureBox 将处理该事件。

    【讨论】:

    • 是的,我使用了 PictureBox.MouveEnter 事件,事实上,它正在工作。我的问题是我有 2 个图片框,其中一个在另一个上方。非常新手的错误!
    【解决方案2】:

    正如 InBetween 所写,PictureBox.MouseXXX 应该被解雇。你可以在你的UserControl 中捕获它们。

    如果您希望代表UserControl 触发事件,只需禁用PictureBox。请注意,该事件会针对 UserContrl 上的任何鼠标位置触发,而不仅仅是 PictureBox。

    【讨论】:

    • 感谢您的输入,请参阅我在另一个答案中的评论。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 2016-04-03
    相关资源
    最近更新 更多