1
DataGridView.Sorted当用户单击标题对网格进行排序时触发。我怎样才能以编程方式告诉哪个列标题被点击?和/或哪一列被分类?DataGridView.Sorted hwo告诉哪列被排序?
我厌倦了下面的代码,但Sorted事件在点击事件之前触发。任何一个子事件都没有帮助。
我可以将调用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是Nothing,所以它不是一个完美的解决方案,但它在第一次显示后对用户排序起作用。 – rheitzman 2014-12-12 19:18:41
属性的值由用户单击列标题进行排序(如果已启用)或通过手动调用数据网格视图上的排序来设置。默认情况下,它假定行是无序的。如果在填充它时对它们进行了排序,则可能需要调用[DataGridView.Sort](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview.sort%28v=vs。 110%29.aspx)确保它已设置(这也确保排序箭头字形在列上正确设置。 – Anthony 2014-12-12 19:41:42