با هر بار اضافه کردن یک سطر به ListView ، تمام ناحیه پس زمینه کنترل به روز شده و مشکل چشمک زدن (Flicker) آزار دهندهای را پدید میآورد. راه حلهای زیادی برای رفع این مشکل وجود دارد. برای مثال استفاده از متدهای BeginUpdate و EndUpdate قبل و پس از افزودن تعداد زیادی رکورد به یک ListView . اما اگر این کنترل توسط چند ترد در حال به روز رسانی باشد و هربار هم تعداد آیتمهای اضافه شده آنچنان زیاد نباشد، این روش اثری نداشته و باز هم مشکل flickering وجود خواهد داشت.
رفع این مشکل راه حل بسیار سادهای دارد که به شرح زیر است:
یک user control جدید ایجاد کنید، آنرا از ListView به ارث برده و سپس سطر زیر را به constructor آن اضافه کنید:
this.DoubleBuffered = true;
اکنون از این ListView سفارشی بجایlistView استاندارد استفاده کنید، مشکل برطرف میشود!
public partial class CustomListView : ListView
{
public CustomListView()
{
this.DoubleBuffered = true;
}
}
شبیه به همین مورد را جهت کنترل ListBox نیز میتوان پیاده سازی کرد