这是一个有效的解决方案,我敢打赌还有更多的解决方案可以找到,并希望其他人会加入并给你。您只需将自定义代码添加到您的SortCompare
事件处理程序DataGridView
并在那里执行您自己的比较函数,此比较函数有 2 个参数并返回 -1、0 或 1:
private void dataGridView_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
{
if(e.Column == [your desired column]){
e.Handled = true;
e.SortResult = Compare(e.CellValue1, e.CellValue2);
}
}
//Here is my compare function, it simply reverts the normal comparison result
private int Compare(object o1, object o2)
{
return -o1.ToString().CompareTo(o2.ToString());
}
要对其进行测试,您只需将 3 行添加到一列 DataGridView,例如a,b,c
. 通常升序(由 ColumnHeader 上的向上三角形表示)是a,b,c
,但使用Compare
上面的函数,它将是c,b,a
,同样,降序(由 ColumnHeader 上的向下三角形表示)是c,b,a
,但使用Compare
上面的函数,它将是a,b,c
.
您可以添加更多自己的比较功能,并为您喜欢的每一列使用每一个。我认为重要的是如何定义这些函数,我不知道为什么要这样做,因为默认比较是可以的。