سؤال

لدي ListView والذي أحتاج أحيانًا إلى وضع حوالي 10000 عنصر فيه.لا تتعامل ListViews مع هذا جيدًا حقًا، ويتم قفلها لبضع ثوانٍ أثناء فرز العناصر ورسمها.إذا قمت بإضافة العناصر بشكل فردي، فسيكون الأمر أسوأ، حيث يتم قفلها لمدة دقيقة تقريبًا.

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

هل هناك أي أفكار حول كيفية التخلص من هذا التأخير؟أم أن هناك مكونًا آخر سهل الاستخدام نسبيًا وأفضل في عرض كميات كبيرة من البيانات؟

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

المحلول

تحتاج إلى استخدام الوضع الظاهري.

نصائح أخرى

حسنًا.إذا كنت تريد فقط تحميل المحتوى في الخلفية، فيمكنك تجربة سلسلة رسائل لملء ListView، مما سيسمح بتحميل النموذج.

لا أعتقد أنك ستحصل على توقف مؤقت إذا قمت بوضع Application.DoEvents();عندما تقوم بتحميل العناصر (مما يسمح للنموذج بإعادة رسم الأحداث واستقبالها).

for (int ix=0; ix < 10000; ix ++)
{
 listView1.Items.Add(ix.ToString());
 Application.DoEvents();
}

أعتقد أن اقتراحاتي جيدة إذا لم تكن على دراية بـ VirtualMode

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