Я использую класс SimpleFilteredList, полученный с этого сайта:
http://blogs.msdn.com/b/winformsue/archive/2007/12/06/filtering-code.aspx
Это позволяет мне применять базовую сортировку к бизнес-объектам при добавлении в DataGridView через BindgingSource. Это очень хорошо послужило моим целям, однако я не понимаю одного аспекта.
Каждый раз, когда в DataGridView выбирается новая строка, это побуждает вызывать переопределенную функцию EndNew в классе SimpleFilteredList. Это особенно раздражает, когда в последней строке была выбрана предыдущая строка, потому что это вызывает выполнение алгоритма сортировки.
Для всех столбцов и DataGridView для Readonly установлено значение True, а для AllowUserToAddRows и AllowUserToDeleteRows установлено значение False.
Как я могу остановить вызов этой функции EndNew при выборе новой строки в DataGridView?
Функция EndNew в классе SimpleFilteredList:
public override void EndNew(int itemIndex)
{
// Check to see if the item is added to the end of the list,
// and if so, re-sort the list.
if (sortPropertyValue != null && itemIndex > 0 && itemIndex == this.Count - 1)
ApplySortCore(this.sortPropertyValue, this.sortDirectionValue);
base.EndNew(itemIndex);
}