سؤال
لدي تطبيق يفتح نموذجًا مشروطًا باستخدام طريقة ShowDialog.بمجرد عرض هذا النموذج أريد التقاط حركة الماوس حتى لو كان المؤشر خارج النموذج.كيف يمكنني التقاط حركة الماوس؟لقد رأيت شيئًا ما باستخدام خاصية الالتقاط ولكن لا يمكنني تشغيله.
[يحرر]
أريد أن يتم إعلامي إذا تحرك الماوس خارج النموذج.
المحلول
ال Capture
الملكية هي الطريقة الصحيحة، ولكن هناك بعض القيود.
- فقط النافذة الأمامية يمكنها التقاط الماوس
- يمكن تعطيل التقاط الماوس بواسطة أجزاء أخرى من النظام
- وظيفة Win32 API
SetCapture
تتم إعادة تعيينه في كل مرة يحدث فيها حدث "رفع الماوس".أفترض أن هذا ينطبق أيضًا على .NET.
انظر قسم الملاحظات ل Capture
ملكية.
عند التقاط الماوس، ستتلقى الأحداث المعتادة ولكن مع نطاق إحداثيات أوسع للماوس (على سبيل المثال، موضع X سالب، إذا بقي الماوس خارج عنصر التحكم في الالتقاط)
يعد التقاط الماوس أمرًا هشًا نظرًا لطبيعته العالمية.تحقق مما إذا كانت هناك طرق أخرى للتعامل مع أحداث معينة.ربما MouseLeave
أو MouseEnter
الأحداث تكفي في حالتك.
نصائح أخرى
ويمكنك فقط استخدام خاصية ثابتة Control.MousePosition .
ويمكنك قراءة موقف المؤشر، باستخدام الخاصية Cursor.Position، انظر> وأ href = "http://msdn.microsoft.com/en-us/library/system.windows.forms.cursor.position .aspx اتصال "يختلط =" نوفولو noreferrer "> Cursor.Position