كيف يمكنني التمييز بين النقرات الفردية والمزدوجة في .Net؟

StackOverflow https://stackoverflow.com/questions/218555

  •  03-07-2019
  •  | 
  •  

سؤال

أريد تجاوز OnMouseClick وOnMouseDoubleClick وتنفيذ إجراءات مختلفة اعتمادًا على نمط النقر الذي تم استخدامه.

المشكلة هي أن OnMouseClick يحدث لكل من النقرات الفردية والمزدوجة، ويتم استدعاؤه قبل OnMouseDoubleClick.

أنا متأكد من أن هذا يجب أن يكون مطلبًا شائعًا، لذا أعتقد أنني أفتقد شيئًا واضحًا جدًا.هل يمكن لأحدكم أخذ مكاني؟

تعديل للإضافة:عدد MouseEventArgs.Clicks لا يساعد.في حالة النقر المزدوج، يتم التعامل مع النقرة الأولى كنقرة واحدة في OnMouseClick باستخدام MouseEventArgs.Clicks == 1.

تعديل للإضافة:الكائنات هي الصور المصغرة للصور.يجب أن تؤدي النقرة الواحدة إلى تبديل التحديد وإيقافه للتصدير.يجب أن يؤدي النقر المزدوج إلى جعل الصورة المصغرة في وضع ملء الشاشة.إجراءات التحديد و"التنشيط" متعامدة.قد يشير هذا إلى وجود مشكلة أساسية في الإجراءين...

هتافات ، روب

هل كانت مفيدة؟

المحلول

يحدث ذلك في جميع أنحاء Windows.لا أعتقد أنهم أضافوا أي شيء خاص للتعامل معه في .Net.

الوسيلة العادية للتعامل مع هذا هي

  • أ) فقط اجعل واحد انقر فوق شيء تريد أن يحدث قبل النقر المزدوج ، مثل تحديد.
  • ب) إذا لم يكن هذا خيارًا، ففي حدث النقر، ابدأ مؤقتًا.في علامة المؤقت، قم بإجراء النقرة الواحدة.في حالة حدوث حدث النقر المزدوج أولاً، قم بإيقاف المؤقت، ثم قم بإجراء النقر المزدوج.

يجب أن يكون مقدار الوقت الذي قمت بضبطه مساويًا لوقت النقر المزدوج الخاص بالنظام (والذي يمكن للمستخدم تحديده في لوحة التحكم).إنه متاح من System.Windows.Forms.SystemInformation.DoubleClickTime.التفاصيل الكاملة موجودة في MSDN، هنا

نصائح أخرى

والمسألة هي ان معظم الكائنات لا تنفذ على حد سواء. وعدد قليل من الأشياء التي يمكن أن يكون معقول إجراءات مختلفة للنقرات مفردة ومزدوجة عموما موافق لتشغيل النقر عمل واحد قبل النقر مضاعفة العمل (تسليط الضوء ثم فتح مجلد، أدخل التركيز على شريط العنوان قبل تحديده، وما إلى ذلك) وفقط وهناك طريقة لتحديد من المحتمل أن يكون الانتظار على نقرة واحدة للحصول على مبلغ من الوقت وإلغاء عمل لبنقرة واحدة إذا تم الكشف عن النقر المزدوج.

وحل آخر محتمل هو أن يكون OnMouseDoubleClick استدعاء دالة OnMouseClick. منذ عمل في OnMouseClick هو تبديل ثنائي، واصفا إياه مرتين يعيد إلى الدولة نفسها.

وهكذا عندما ينقر المستخدم مزدوجة، والنوافذ وتدعو OnMouseClick، ثم OnMouseDoubleClick. OnMouseDoubleClick يدعو OnMouseClick (مرة أخرى) لاستعادة الدولة، ثم يعالج النقر المزدوج.

وهذا يشعر مرضية كحل، لكنه يعمل.

<ع> استخدام جهاز توقيت (لابتلاع النقرة الأولى من النقر المزدوج) غير مرضية على حد سواء، ولها مضاعفات إضافية لمعالجة مزدوجة التفضيلات بنقرة معدل المستخدم.

وابتهاج، روب

يمكنك بدء مؤقت داخل معالج الأحداث OnMouseClick.

  • إذا انتهت مهلة المؤقت (على سبيل المثال 300 مللي ثانية)، فالمقصود هو النقر مرة واحدة.

آخر

  • إذا تم إنشاء حدث OnMouseClick آخر قبل انتهاء المهلة الزمنية، فيمكنك فحص موضع x&y للنقرة وإذا كان ضمن نطاق معين من النقرة الأولى، فقم بإجراء وظيفة النقر المزدوج.

خلاف ذلك

  • تعامل مع النقرة الأولى وأعد تهيئة المؤقت للنقرة الثانية

ملحوظة:يتمتع هذا التطبيق بميزة إمكانية تكوين كل من الوقت المحدد ونصف قطر "النقر المزدوج" بشكل مستقل عن تكوين النظام مما يسمح باستيراد s/w على أجهزة متعددة/

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