我想让我的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;
}
}
}
它有效,但我问自己有没有标准的方法来做到这一点?我是否仍然需要编写代码来获得这个非常标准的功能,还是有更好的解决方案?
答案 0 :(得分:0)
您只需向控件自己的ColumnHeaderMouseClick事件添加一个事件处理程序,而无需任何子类化。
这种行为不是开箱即用的原因很简单:并非所有网格都使用数据源填充。