在第三次单击DataGridView时删除排序的最佳实践

时间:2015-09-08 08:46:58

标签: c# winforms datagridview

我想让我的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;
        }
    }
}

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

1 个答案:

答案 0 :(得分:0)

您只需向控件自己的ColumnHeaderMouseClick事件添加一个事件处理程序,而无需任何子类化。

这种行为不是开箱即用的原因很简单:并非所有网格都使用数据源填充。