DataGridView对EndNew的不必要调用

本文关键字:不必要 调用 EndNew DataGridView | 更新日期: 2023-09-27 18:03:02

我使用一个名为SimpleFilteredList的类,我从这个网站获得:

http://blogs.msdn.com/b/winformsue/archive/2007/12/06/filtering-code.aspx

它允许我在通过bindingsource添加到DataGridView时对业务对象应用基本排序。它很好地满足了我的目的,但我不明白一个方面。

每次在DataGridView中选择新行时,都会提示调用SimpleFilteredList类中被覆盖的EndNew函数。当最后一行是前一行选择时,这尤其令人讨厌,因为它强制执行排序算法。

所有列和DataGridView的Readonly设置为True, AllowUserToAddRows和AllowUserToDeleteRows设置为False。

我怎么能阻止这个EndNew函数被调用时,在DataGridView中选择了一个新的行?

SimpleFilteredList类中的EndNew函数:

    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);
    }

DataGridView对EndNew的不必要调用

检查项目的索引,如果没有指定,则忽略调用。

注意在某些场景中,例如Windows窗体的复杂数据绑定,集合可能会接收其他项的CancelNew或EndNew调用比新添加的项。(每个项目通常是数据中的一行视图)。忽略这些电话;仅在以下情况下取消或提交新项目指定了该项的索引。

http://msdn.microsoft.com/en-us/library/system.componentmodel.icanceladdnew.aspx