سؤال

ما هي الطريقة الجيدة لتحديد الكل أو عدم تحديد أي عناصر في عرض القائمة دون استخدام:

foreach (ListViewItem item in listView1.Items)
{
 item.Selected = true;
}

أو

foreach (ListViewItem item in listView1.Items)
{
 item.Selected = false;
}

أعلم أن التحكم المشترك في عرض القائمة Win32 يدعمه رسالة LVM_SETITEMSTATE والتي يمكنك استخدامها لتعيين الحالة المحددة، وبتمرير -1 كفهرس سيتم تطبيقه على جميع العناصر.أفضل عدم إرسال رسائل PInvocing إلى عنصر التحكم الذي يحدث خلف عنصر تحكم .NET Listview (لا أريد أن أكون مطورًا سيئًا وأعتمد على سلوك غير موثق - عندما يقومون بتغييره إلى فئة ListView مُدارة بالكامل)

صدم

الماسوشية الزائفة لديه لا تختر شيء قضية:

ListView1.SelectedItems.Clear(); 

الآن فقط بحاجة إلى اختر الكل شفرة

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

المحلول

واو هذا قديم...:د

اختر الكل

 listView1.BeginUpdate(); 
 foreach (ListViewItem i in listView1.Items)
 {
     i.Selected = true;
 }
 listView1.EndUpdate();

اختر معكوس

 listView1.BeginUpdate(); 
 foreach (ListViewItem i in listView1.Items)
 {
     i.Selected = !i.Selected;
 }
 listView1.EndUpdate();

BeginUpdate و EndUpdate تُستخدم لتعطيل/تمكين إعادة رسم عنصر التحكم أثناء تحديث محتواه...أعتقد أنه سيحدد كل شيء بشكل أسرع، لأنه سيتم تحديثه مرة واحدة فقط، وليس listView.Items.Count مرات.

نصائح أخرى

أيضاً

ListView1.SelectedItems.Clear();

أو

ListView1.SelectedIndices.Clear();

ينبغي أن تفعل الحيلة لتحديد لا شيء، على أي حال.

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