2010-01-20 30 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

相關問題