DataGridView.SortCompare DataGridView.SortCompare DataGridView.SortCompare DataGridView.SortCompare Event


DataGridView 对两个单元格的值进行比较以执行排序操作时发生。Occurs when the DataGridView compares two cell values to perform a sort operation.

 event System::Windows::Forms::DataGridViewSortCompareEventHandler ^ SortCompare;
public event System.Windows.Forms.DataGridViewSortCompareEventHandler SortCompare;
member this.SortCompare : System.Windows.Forms.DataGridViewSortCompareEventHandler 
Public Custom Event SortCompare As DataGridViewSortCompareEventHandler 


下面的代码示例演示如何使用SortCompare中多个列进行排序。The following code example demonstrates how to use the SortCompare in a multiple column sort. 此示例摘自如何:自定义 Windows 窗体 DataGridView 控件中的排序This example is part of a larger example provided in How to: Customize Sorting in the Windows Forms DataGridView Control.

private void dataGridView1_SortCompare(object sender,
    DataGridViewSortCompareEventArgs e)
    // Try to sort based on the cells in the current column.
    e.SortResult = System.String.Compare(
        e.CellValue1.ToString(), e.CellValue2.ToString());

    // If the cells are equal, sort based on the ID column.
    if (e.SortResult == 0 && e.Column.Name != "ID")
        e.SortResult = System.String.Compare(
    e.Handled = true;
Private Sub DataGridView1_SortCompare( _
    ByVal sender As Object, ByVal e As DataGridViewSortCompareEventArgs) _
    Handles DataGridView1.SortCompare

    ' Try to sort based on the contents of the cell in the current column.
    e.SortResult = System.String.Compare(e.CellValue1.ToString(), _

    ' If the cells are equal, sort based on the ID column.
    If (e.SortResult = 0) AndAlso Not (e.Column.Name = "ID") Then
        e.SortResult = System.String.Compare( _
            DataGridView1.Rows(e.RowIndex1).Cells("ID").Value.ToString(), _
    End If

    e.Handled = True

End Sub


此事件时才会发生时DataSource未设置属性和VirtualMode属性值是falseThis event occurs only when the DataSource property is not set and the VirtualMode property value is false.

此事件将对正在排序的列中的单元格进行比较。This event compares pairs of cells in the column being sorted. 仅当用户单击的列的标头时,才发生SortMode属性值为Automatic,或当您调用Sort(DataGridViewColumn, ListSortDirection)重载。It occurs only when the user clicks the header of a column with a SortMode property value of Automatic, or when you call the Sort(DataGridViewColumn, ListSortDirection) overload. 当发生此事件时具有的列SortMode属性值为Programmatic,必须通过自己显示排序标志符号DataGridViewColumnHeaderCell.SortGlyphDirection属性。When this event occurs for a column with a SortMode property value of Programmatic, you must display the sorting glyph yourself through the DataGridViewColumnHeaderCell.SortGlyphDirection property.

可以使用此事件在一列或多个列中使用单元格的值的行进行排序。You can use this event to sort rows using the cell values in one column or in multiple columns. 使用CellValue1CellValue2属性中指定的列中的单元格值进行比较Column属性。Use the CellValue1 and CellValue2 properties to compare cell values in the column specified in the Column property. 使用RowIndex1RowIndex2访问通过其他列中的值的属性Rows集合。Use the RowIndex1 and RowIndex2 properties to access values in other columns through the Rows collection.

有关如何处理事件的详细信息,请参阅处理和引发事件For more information about how to handle events, see Handling and Raising Events.