2010-01-20 60 views
6

反正有一个类可以捕获应用程序中的最后一次点击吗?类似于WPF。抓住最后一个窗口点击任何地方

public class MyClickManagerClass 
{ 
    public MyClickManagerClass() 
    { 
     // subscribe to a global click event 
    } 

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

感谢您的时间!

回答

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); 
    } 
} 

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

+0

工作真不错!谢谢!只有一个注释,它是:InputManager.Current.PreProcessInput – Carlo 2010-01-21 19:11:22

+0

谢谢。我在我的答案中修复了代码。 – 2010-01-22 07:19:13

相关问题