DataGridView.Sorted срабатывает, когда пользователь нажимает на заголовок для сортировки сетки. Как я могу программно определить, какой заголовок столбца был нажат? И/или какой столбец был отсортирован?
Я устал от кода ниже, но событие Sorted срабатывает перед событием click. Домены в любом другом не помогли.
Я могу переместить вызов GreenBar на событие click, но это похоже на плохую идею, так как это зависит от аномалии при запуске.
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
Вы можете проверить свойство SortedColumn
DataGridView
чтобы увидеть, какой столбец был отсортирован.
Другим полезным свойством является свойство SortOrder
.