【问题标题】:WPF Mouse Click Off EventWPF 鼠标点击关闭事件
【发布时间】:2012-06-14 21:23:52
【问题描述】:

我知道每个控件都有一个鼠标单击事件,但是有没有办法确定鼠标单击何时不在控件上?

【问题讨论】:

  • 1.不,不是每个控件都有鼠标单击事件。只有逻辑上可点击的东西——例如按钮、复选框、菜单项、超链接——具有 Click 事件。其他控件,例如 TextBoxes 和 Images,则没有。如果您希望其他内容可以点击 - 例如一个图像——那么你应该重新设置一个按钮的样式。 2. 如果点击不在控件 X 上,则控件 X 不会收到通知 - 控件 Y(您实际单击的那个)会收到事件。

标签: c# wpf mouseevent


【解决方案1】:

您可以使用this code 查找窗口上的所有控件或目标类型的可视元素并处理它的鼠标事件。

【讨论】:

    【解决方案2】:

    您可以检查 IsMouseOver 是否为 false,如果您想在 IsMouseOver == false 时挂钩某个操作,您可以覆盖该 dp 的元数据。

    【讨论】:

      【解决方案3】:

      您可以调用 CaptureMouse,然后该对象将接收所有鼠标事件。然后,您可以从鼠标向下的点确定它是否在您的控制范围内。或者您可以改为监听 LostMouseCapture 事件。

      【讨论】:

        【解决方案4】:

        这不适用于Click 事件(因为没有隧道版本,只有冒泡版本),但您可以在Window 类上处理路由的PreviewMouseLeftButtonDown 并检查目标是否控制在命中树中。

        【讨论】: