最佳实践是在第三次点击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;
}
}
}
它可以工作,但我问自己,是否没有标准的方法来做到这一点?我还需要编写代码来获得这个非常标准的功能吗?还是有更好的解决方案?
您可以为控件自己的ColumnHeaderMouseClick事件添加一个事件处理程序,而不需要子类化。
这种行为没有出现的原因很简单:不是所有的网格都是使用数据源填充的。