मुझे किसी अन्य नियंत्रण की स्थिति में माउस के नीचे नियंत्रण खोजने की आवश्यकता है। मैं GetTopLevel
से शुरू कर सकता हूं और GetChildAtPoint
का उपयोग करके फिर से शुरू कर सकता हूं, लेकिन क्या कोई तेज तरीका है?क्या माउस के नीचे नियंत्रण प्राप्त करने का कोई त्वरित तरीका है?
उत्तर
इस कोड को समझ का एक बहुत नहीं है, लेकिन यह नियंत्रण संग्रह traversing से बचने करता है:
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr WindowFromPoint(Point pnt);
private void Form1_MouseMove(object sender, MouseEventArgs e) {
IntPtr hWnd = WindowFromPoint(Control.MousePosition);
if (hWnd != IntPtr.Zero) {
Control ctl = Control.FromHandle(hWnd);
if (ctl != null) label1.Text = ctl.Name;
}
}
private void button1_Click(object sender, EventArgs e) {
// Need to capture to see mouse move messages...
this.Capture = true;
}
मुझे सही समझ में आता है। :-) विंडोफ्रॉमपॉइंट रोकथाम के बावजूद, स्क्रीन पर मकान की स्थिति के नीचे सीधे विंडो हैंडल पकड़ लेता है। Control.FromHandle इसे नेट नियंत्रण में (यदि संभव हो) में अनुवाद करता है। बूम, किया। बहुत चालाक –
माउस क्लिक को अनुकरण करना आसान नहीं होगा? आप एक लिंक [यहां] ढूंढ सकते हैं (http://stackoverflow.com/questions/2416748/how-to-simulate-mouse-click-in-c) – Pimenta
क्या होगा यदि मैं किसी अन्य एप्लिकेशन का नियंत्रण प्राप्त करना चाहता हूं & –
untested है और मेरे सिर के ऊपर से (और शायद धीमी गति से ...):
Control GetControlUnderMouse() {
foreach (Control c in this.Controls) {
if (c.Bounds.Contains(this.PointToClient(MousePosition))) {
return c;
}
}
}
या LINQ के साथ फैंसी होने के लिए:
return Controls.Where(c => c.Bounds.Contains(PointToClient(MousePosition))).FirstOrDefault();
मुझे यकीन है कि कैसे विश्वसनीय इस नहीं कर रहा हूँ हालांकि, होगा।
मैंने अभी इसका इस्तेमाल किया है, माउस की स्थिति के नीचे * हर * नियंत्रण प्राप्त करना बहुत अच्छा है। हालांकि, यह सी। बाउंड होना चाहिए। (प्वाइंट पी) सी नहीं है। बाउंड्स। इंटरफेक्ट्स के साथ (आयताकार आर)। – snicker
डी ओह! धन्यवाद। मैं इसे अभी संपादित करूँगा ... –
यह मेरे साथ काम नहीं करता है .. मुझे हमेशा शीर्ष नियंत्रण मिलता है – SolidSnake
- 1. माउस के नीचे माउस स्थान प्राप्त करें?
- 2. क्या कोई सेट बनाने का कोई त्वरित तरीका है?
- 3. क्या कोई संदर्भ पता प्राप्त करने का कोई तरीका है?
- 4. क्या WPF में माउस ईवेंट के लिए नियंत्रण पारदर्शी बनाने का कोई तरीका है?
- 5. क्या स्ट्रिंग में पिछले दो वर्ण प्राप्त करने के लिए कोई त्वरित तरीका है?
- 6. केकपीएचपी - प्राप्त करने/नियंत्रक/कार्य पथ पाने का त्वरित तरीका?
- 7. माउस घटनाओं को कैप्चर करने से कुछ DOM तत्व अक्षम करने का कोई तरीका है?
- 8. क्या डब्लूपीएफ वेबब्रोसर नियंत्रण के शीर्ष पर डब्ल्यूपीएफ नियंत्रण प्रस्तुत करने का कोई तरीका है?
- 9. कोई भी एनम मूल्य पर कस्टम विशेषताओं को प्राप्त करने का एक त्वरित तरीका जानता है?
- 10. क्या पीईडीईवी में आरईपीएल प्राप्त करने का कोई तरीका है?
- 11. क्या Python में एकाधिक लाइनों के इंडेंटेशन को कम करने का कोई त्वरित तरीका है?
- 12. क्या सी # में प्रदर्शन के लिए XmlDocument प्रारूपित करने का कोई त्वरित तरीका है?
- 13. क्या सी # में कथन का उपयोग करने का कोई त्वरित तरीका है?
- 14. क्या कोई नई पंक्ति जोड़ने पर नीचे jqGrid स्क्रॉल करने का कोई तरीका है?
- 15. क्या .NET में विंडोज सिस्टम आइकन के विभिन्न आकार प्राप्त करने का कोई तरीका है?
- 16. क्या IE को ActiveX नियंत्रण को अनलोड करने के लिए मजबूर करने का कोई तरीका है?
- 17. क्या माउस के लिए एचटीएमएल तत्व को पूरी तरह से अनदेखा करने का कोई तरीका है?
- 18. क्या कोई ऑब्जेक्ट का स्मृति पता एनएसएसटींग के रूप में प्राप्त करने का कोई तरीका है?
- 19. क्या mousemove को ट्रिगर करने और event.pageX, event.pageY प्राप्त करने का कोई तरीका है?
- 20. क्या ऐसा करने का कोई तरीका है?
- 21. क्या WPF में WebBrowser नियंत्रण का उपयोग करने के लिए कोई MVVM- अनुकूल तरीका है?
- 22. क्या विजुअल स्टूडियो 2012 में त्वरित खोज अक्षम करने का कोई तरीका है?
- 23. क्या किसी इकाई को .csv फ़ाइल में कनवर्ट करने का कोई त्वरित तरीका है?
- 24. क्या कोई कॉलम शून्य है या नहीं, यह जांचने का कोई त्वरित तरीका है?
- 25. माउस नीचे क्लिक करने से मैक
- 26. क्या कॉलर फ़ंक्शन का नाम कैली के भीतर प्राप्त करने का कोई तरीका है?
- 27. क्या कोई DOM तत्व के बाध्यकारी बॉक्स (पिक्सेल में) प्राप्त करने का कोई तरीका है?
- 28. क्या डेटा के बिना एक आइटम को बाध्य करने का कोई तरीका है। एक पुनरावर्तक नियंत्रण?
- 29. एमवीसी - क्या उनके संबंधित जावास्क्रिप्ट के साथ नियंत्रण बंडल करने का कोई अच्छा तरीका है?
- 30. क्या SQLLataReader को मल्टीथ्रेड करने का कोई तरीका है?
तुम क्यों GetTopLevel पर शुरू करने की आवश्यकता है, तो आप बस सीधे GetChildAtPoint करने के लिए जाना नहीं कर सकता है? –
(ए) माउस के नीचे नियंत्रण जरूरी नहीं है कि नियंत्रण का बच्चा जिसका आयोजन फायरिंग हो, और (बी) मुझे अभी भी आंतरिक नियंत्रण खोजने के लिए फिर से शुरू करना होगा। – Simon