माउस सबसे नियंत्रण नीचे दबाया जाता है जब होगा तब Control.Capture माउस इनपुट। इसका मतलब है कि सभी माउसमोव घटनाओं को मूल नियंत्रण में भेजा जाता है जो माउस के नियंत्रण के बजाए कब्जा कर लिया जाता है। यह तब तक जारी रहता है जब तक माउस कैप्चर नहीं करता है जो आम तौर पर माउस पर होता है।
यदि आपको वास्तव में यह पता होना चाहिए कि माउस आपके नियंत्रण पर कब है, तब भी जब किसी अन्य नियंत्रण ने माउस इनपुट पर कब्जा कर लिया हो तो आपके पास वास्तव में एक ही तरीका है। आपको अपने आवेदन के अंदर अन्य नियंत्रणों के लिए निर्धारित विंडोज संदेशों को स्नूप करना होगा। कि आप एक संदेश फ़िल्टर जोड़ने की जरूरत है ऐसा करने के लिए ...
Application.AddMessageFilter(myFilterClassInstance);
तो फिर तुम एक उपयुक्त वर्ग पर IMessageFilter लागू करने की आवश्यकता ...
public class MyFilterClass : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_MOUSEMOVE)
// Check if mouse is over my picture box!
return false;
}
}
तो फिर तुम माउस की घटनाओं के लिए देख सकते हैं और अगर जाँच वे आपके चित्र बॉक्स पर हैं और जो भी आप करना चाहते हैं वह करें।
स्रोत
2008-10-04 03:15:54
Sooo पास !! MouseLeave के लिए यह.capture काम साफ़ करता है, लेकिन माउसइंटर (किसी अन्य पिक्चरबॉक्स का नहीं) –
मैं पूरी तरह से समझ नहीं पाया कि आप क्या हासिल करने की कोशिश कर रहे थे, इसलिए नहीं, यह दुर्भाग्य से काम नहीं करेगा। –