WPF。抓住最后一个窗口点击任意位置

时间:2010-01-20 22:43:21

标签: wpf window click

无论如何,类可以捕获应用程序中的最后一次单击吗?像

这样的东西
public class MyClickManagerClass
{
    public MyClickManagerClass()
    {
        // subscribe to a global click event
    }

    private void GlobalClickEventHandler(object sender, EventArgs e)
    {
        // do something with the click here
    }
}

谢谢你的时间!

1 个答案:

答案 0 :(得分:12)

如果您只想捕捉给定Window中任意位置的鼠标点击,只需在窗口级别订阅MouseDownPreviewMouseDown即可。

如果你真的希望它是应用程序的全局(而不仅仅是窗口),你应该订阅InputManager.PreProcessInputInputManager.PostProcessInput事件并观察鼠标事件:

public MyClickManagerClass()
{
  InputManager.Current.PreProcessInput += (sender, e) =>
  {
    if(e.StagingItem.Input is MouseButtonEventArgs)
      GlobalClickEventHandler(sender,
        (MouseButtonEventArgs)e.StagingItem.Input);
  }
}

请注意,“sender”始终是InputManager,但您可以使用MouseEventArgs.GetPosition(visual)将坐标映射到其他控件。