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并且属性值为false时,才会发生此事件。This 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. CellValue1使用和CellValue2属性来比较Column属性中指定的列中的单元值。Use the CellValue1 and CellValue2 properties to compare cell values in the column specified in the Column property. RowIndex1使用和RowIndex2属性可以通过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.