كيف يمكنني تحديث ListView WinForms عناصر عند استخدام VirtualMode = صحيح؟

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

سؤال

ولدي التطبيق مع ListView كبيرة والتي هي بطيئة بشكل رهيب لذلك أنا تنفيذ VirtualMode. لا يبدو MSDN لتغطية كيف سيكون إضافة وحذف بنود جديدة في منتصف يكون ListView.

وعلى سبيل المثال، يكون ListView لديها 1000 عنصر (تمثل الملفات على القرص) وبعد سيتم حذف بعض الملفات وبعض أضاف بحيث VirtualListSize، بل قد يكون هو نفسه بعد التحديث السكان الأولي من يكون ListView (قبل الحدث RetrieveVirtualItem) .

والسؤال 1) كيف أقول ليكون ListView "تم تغيير هذه البنود / حذف" بحيث استعلام؟

وبالإضافة إلى ذلك، بعض الملفات فقط تغيير وأود أن تعكس الوضع المتغير بهم في ListView.

س 2) كيف أجد عنصر في ListView بالنظر إلى أن VirtualMode لا يسمح لي الوصول إلى مجموعة العناصر التي كنت تستخدم من قبل (أنا استخدم طريقة ContainsKey على أن جمع).

ويبدو سهلا، ولكن لا استطيع ان ارى بنفسي. مساعدة تقدير كبير.

وريان

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

المحلول

لإضافة أو حذف العناصر، تعيين simplay VirtualListSize إلى إجمالي عدد العناصر. لتحديث عناصر فردية تستخدم RedrawItems.

لتحديد عنصر معين، يمكنك استخدام الحاوية لديك بالفعل، لا تذهب إلى يكون ListView. ينبغي أن indicies ضمن قائمتك تتطابق مع العناصر من يكون ListView.

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