DataGridView.排序了如何判断对哪一列进行了排序

本文关键字:排序 一列 判断 何判断 DataGridView | 更新日期: 2023-09-27 18:33:11

DataGridView.Sorted在用户单击标题对网格进行排序时触发。如何以编程方式判断单击了哪个列标题?和/或对哪一列进行了排序?

我厌倦了下面的代码,但排序事件在点击事件之前触发。两个子的doevents都没有帮助。

我可以将对 GreenBar 的调用移动到单击事件,但这似乎是一个坏主意,因为它取决于触发顺序异常。

Private Sub dgvMAFTrans_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvMAFTrans.ColumnHeaderMouseClick
    msLastMAFHeaderClicked = dgvMAFTrans.Columns(e.ColumnIndex).Name
End Sub
Private Sub dgvMAFTrans_Sorted(sender As Object, e As EventArgs) Handles dgvMAFTrans.Sorted
    Application.DoEvents()
    GreenBar(dgvMAFTrans, msLastMAFHeaderClicked)
End Sub

添加绿色条的代码会影响:

Sub GreenBar(dgvRef As DataGridView, ColumnName As String)
    Dim sLastTrans As String = ""
    Dim bAddColor As Boolean = False
    If dgvRef.RowCount = 0 Then Exit Sub
    Try
        sLastTrans = dgvRef.Rows(0).Cells(ColumnName).Value
    Catch ex As Exception
        Exit Sub ' no transid
    End Try
    For Each row As DataGridViewRow In dgvRef.Rows
        If row.Cells(ColumnName).Value <> sLastTrans Then
            bAddColor = Not bAddColor
            sLastTrans = row.Cells(ColumnName).Value
        End If
        If bAddColor Then
            row.DefaultCellStyle.BackColor = Color.LightGreen
        End If
    Next
End Sub

DataGridView.排序了如何判断对哪一列进行了排序

你可以检查DataGridViewSortedColumn属性以查看排序的列。

另一个有用的属性是SortOrder属性。