قم بتغيير الحالة المحددة لـ ListViewItem فقط إذا تم النقر فوق مربع الاختيار

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

  •  05-07-2019
  •  | 
  •  

سؤال

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

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

المحلول

يتضمن الحل 3 أحداث ومتغير حالة واحد من النوع bool:

private bool inhibitAutoCheck;

private void listView1_MouseDown(object sender, MouseEventArgs e) {
    inhibitAutoCheck = true;
}

private void listView1_MouseUp(object sender, MouseEventArgs e) {
    inhibitAutoCheck = false;
}

private void listView1_ItemCheck(object sender, ItemCheckEventArgs e) {
    if (inhibitAutoCheck)
        e.NewValue = e.CurrentValue;
}

يتيح فحص العنصر تجنب الانتقال إلى حالة فحص أخرى (يتم استدعاؤها قبل الحدث ItemChecked).الحل بسيط وأكيد.

لمعرفة ذلك قمت بإجراء اختبار صغير مع أحداث مختلفة:

عند النقر:

  1. MouseDown <------------ المنطقة المحظورة
  2. انقر
  3. النقر بالماوس
  4. MouseUp ------------->
  5. فحص العناصر (الخارج المنطقة المحظورة)
  6. تم التحقق من العنصر

عند النقر المزدوج:

  1. MouseDown <------------ المنطقة المحظورة
  2. تم تغيير اختيار العنصر
  3. تم تغيير الفهرس
  4. انقر
  5. النقر بالماوس
  6. MouseUp ------------->
  7. MouseDown <------------ المنطقة المحظورة
  8. فحص العناصر (داخل المنطقة المحظورة)
  9. تنشيط العنصر
  10. نقرتين متتاليتين
  11. النقر بالماوس المزدوج
  12. MouseUp ------------->
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top