حذف عناصر متعددة في مجموعة ملزمة datagridview يأخذ إلى الأبد

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

  •  03-07-2019
  •  | 
  •  

سؤال

هذا ليس سؤال لأني بالفعل answerd ذلك.ولكن قد تكون مفيدة للآخرين أيضا.

وإليك ما سيحدث:

  1. إنشاء WinForm مع Datagridview و ربط دون سرعة الصوت ...مجموعة مع أكثر من 500 من الكائنات التي تم تحميلها إلى ذلك
  2. إضافة بعض الأعمدة إلى datagrid و تجعل واحدة على الأقل autosizemode = ملء
  3. إضافة المنطق حذف جميع الأعمدة المحددة (أيعند الضغط على مفتاح -> حذف)
  4. مارك كافة السجلات وحذفها

وهذا ينبغي أن يستغرق حوالي 30 ثانية.على high end pc (جداول:1 دقيقة على 1000 ...)

السبب:

في كل مرة يمكنك حذف صف مجموعات ListChanged الحدث وأطلق الذي يسبب datagridview إلى حساب المساحة المطلوبة للحصول على autosized العمود (إذا كان شخص مهتم في "الداخلية" لم تعلق مكالمة الرسم البياني.

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

المحلول

الحل:

في حين حذف تعطيل ListChangedEvent:

mycollection.RaiseListChangedEvents = false;

// Delete multiple rows
foreach(DataGridViewRow row In dataGridView.SelectedRows) {
   dataGridView.Rows.Remove(row);
}


// After that you can re-enable the event:
mycollection.RaiseListChangedEvents = true;

// But you have to call
mycollection.ResetBindings();
//to let the datagridview perform at least one redraw.

نفس المهمة الآن يستغرق سوى غمضة عين

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