سؤال

لدي تطبيق يفتح نموذجًا مشروطًا باستخدام طريقة 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top