2010-01-20 12 views
6

क्या वैसे भी कोई कक्षा एप्लिकेशन में अंतिम क्लिक को पकड़ सकती है? कुछडब्ल्यूपीएफ। पिछली विंडो पकड़ें कहीं भी क्लिक करें

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 में कहीं भी माउस क्लिक को पकड़ने की परवाह करते हैं, तो बस विंडो स्तर पर MouseDown या PreviewMouseDown की सदस्यता लेना चाल है।

तुम सच में आवेदन करने के लिए वैश्विक (और नहीं बस खिड़की करने के लिए) होना चाहते हैं, तो आप InputManager.PreProcessInput या InputManager.PostProcessInput घटना की सदस्यता और माउस की घटनाओं के लिए देखना चाहिए:

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

ध्यान दें कि "इस "हमेशा इनपुट प्रबंधक होगा लेकिन आप MouseEventArgs.GetPosition(visual) के साथ अन्य नियंत्रणों के लिए निर्देशांक मैप कर सकते हैं।

+0

वास्तव में अच्छा काम करता है! धन्यवाद! केवल एक नोट, यह है: इनपुट प्रबंधक .Current.PreProcessInput – Carlo

+0

धन्यवाद। मैंने अपने जवाब में कोड तय किया। –

संबंधित मुद्दे