拦截每个鼠标点击事件到WPF应用程序

11
我想截取WPF应用程序中的每个鼠标点击。似乎使用命令路由机制很容易实现,但很抱歉我没有找到任何东西。
我的应用程序实现了几个安全级别,并且要求如果 x 分钟内没有人与(点击)应用程序交互,则自动恢复到最严格的级别。我的计划是添加一个在 x 分钟后过期并调整安全级别的定时器。每次进入应用程序的鼠标点击都会重置计时器。

1
我假设他们不会因为没有使用鼠标而在愉快地打字时遇到应用程序锁定的情况,对吗? - Ian
抱歉大家,由于被其他事情占用,这个周一的工作有些延误。非常感谢大家的快速回复,我会尽快处理这件事情。 - nmarler
3个回答

24
可以注册类处理程序:
public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            EventManager.RegisterClassHandler(typeof(Window), Window.PreviewMouseDownEvent, new MouseButtonEventHandler(OnPreviewMouseDown));

            base.OnStartup(e);
        }

        static void OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
        {
            Trace.WriteLine("Clicked!!");
        }
    }

这将处理应用程序中创建的任何窗口上的任何PreviewMouseDown事件。


哇,我花了很长时间才回到这里,但我终于找到了时间。@baboon 的建议非常好,只需注册一次并忘记它 - 它运行得很好。谢谢。 - nmarler

3
<Window .... PreviewMouseDown="Window_PreviewMouseDown_1">
</Window>

这应该适用于你。

即使其他组件的MouseDown事件在其中触发,此事件仍会触发。

根据Clemens在评论中的建议,PreviewMouseDown是一个比MouseDown更好的选择,因为它确保无法通过不同的事件停止事件冒泡。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接