用ListView吧,有SortOrder属性,MSFlexGrid没有此属性,没有试过。 Private Sub Lvw_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) '设置列表浏览器的SortKey属性和Sorted属性 If Lvw.Sorted And ColumnHeader.Index - 1 = Lvw.SortKey Then Lvw.SortOrder = 1 - Lvw.SortOrder Else Lvw.SortOrder = lvwAscending '升序 Lvw.SortKey = ColumnHeader.Index - 1 End If Lvw.Sorted = True End Sub
比如有三条数据1 a b
2 c d
2 e f
排序之前2 c d的数据被选中
排序之后想得到的效果还是2 c d的那条数据被选中
其中没有哪一列的数据是不可重复的
或者说你是在排序完成后焦点回到grid,然后再次选中刚才选中的那条数据??
如果是第二种情况,你可以在grid里面设置一个不可见的列,然后给在列设置id,id为一个自然数的增量;选中后,取出id放在一个变量里面,排序后,id不会变,然后从变量中取得id,然后让符合条件的行高亮就ok!
Private Sub Lvw_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
'设置列表浏览器的SortKey属性和Sorted属性
If Lvw.Sorted And ColumnHeader.Index - 1 = Lvw.SortKey Then
Lvw.SortOrder = 1 - Lvw.SortOrder
Else
Lvw.SortOrder = lvwAscending '升序
Lvw.SortKey = ColumnHeader.Index - 1
End If
Lvw.Sorted = True
End Sub