最佳实践是在第三次点击DataGridView时删除排序

本文关键字:DataGridView 删除 排序 第三次 最佳 | 更新日期: 2023-09-27 18:11:36

我想让我的DataGridView在第三次点击列时停止排序。
目前,我已经子类化了它,并重写了ColumnheaderMouseClick,如下所示:

private int _standardSortingIndex = -1;
protected override void OnColumnHeaderMouseClick(DataGridViewCellMouseEventArgs e)
{
    base.OnColumnHeaderMouseClick(e);
    if (e.ColumnIndex == this.SortedColumn.Index)
    {
        if (this.SortOrder ==  System.Windows.Forms.SortOrder.Ascending)
        {
            if (e.ColumnIndex == _standardSortingIndex)
            {
                // I use other code here when not binded, omitted here to keep the queston simple...
                ((BindingSource)this.DataSource).Sort = string.Empty;
                _standardSortingIndex = -1;
            }
            else
                _standardSortingIndex = e.ColumnIndex;
        }
    }
}

它可以工作,但我问自己,是否没有标准的方法来做到这一点?我还需要编写代码来获得这个非常标准的功能吗?还是有更好的解决方案?

最佳实践是在第三次点击DataGridView时删除排序

您可以为控件自己的ColumnHeaderMouseClick事件添加一个事件处理程序,而不需要子类化。

这种行为没有出现的原因很简单:不是所有的网格都是使用数据源填充的。