C# 按列排序listview会导致空列表显示第一个

C# 按列排序listview会导致空列表显示第一个,c#,listview,sorting,items,C#,Listview,Sorting,Items,我想按列对listview进行排序,我使用了以下示例代码:。 它可以工作,但在listview的末尾,我有一些空白项,当我单击一列时,这些项将成为第一个项,我需要它们在末尾。如何使代码跳过空白项? 谢谢。如果您已经实现了整个示例,您可以更改比较方法的这一部分: // Compare the two items compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text,

我想按列对listview进行排序,我使用了以下示例代码:。 它可以工作,但在listview的末尾,我有一些空白项,当我单击一列时,这些项将成为第一个项,我需要它们在末尾。如何使代码跳过空白项?


谢谢。

如果您已经实现了整个示例,您可以更改比较方法的这一部分:

// Compare the two items
compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text,
                                      listviewY.SubItems[ColumnToSort].Text);
例如:

// Compare the two items
compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text,
                                      listviewY.SubItems[ColumnToSort].Text);
if (listviewX.SubItems[ColumnToSort].Text=="") 
        compareResult = (OrderOfSort == SortOrder.Descending ? -1:  1);
else if (listviewY.SubItems[ColumnToSort].Text=="") 
       compareResult = (OrderOfSort == SortOrder.Descending ? 1 : -1);
这将覆盖比较的原始结果


看看你是如何检查空项的,也可能是空的,或者你以前做过的任何事情

您好,您的答案有效,但只适用于升序,不适用于降序。结果是:空白->Z->Y->X->W->V->U->等等。我已经使用正在使用的排序器编辑了答案。当然,现在的空白项目将永远留在年底;我没想到您会想要它,但正如您所看到的,这并不是多少额外的代码。我希望它能起作用。。