我有一个名为“mainListView”的ListView(WinForms),其中显示了当前路径的文件和文件夹。根据每个文件的扩展名,我将它们放在不同的组中。当用户点击它们时,我也有列排序mainListView。在排序时排除ListView组
最近我添加了一个组,其行为可能与其他组有所不同,所以当用户点击试图对列表中的项目进行排序的列时,新组会变成一场灾难, 。这个组中有一些元素在某些列中没有信息,所以如果按这个列排序,这种混乱就会发生,这是正常的,所以我只想排除这个组进行排序。
我想知道是否有某种方式排除这个组被点击列时被排序。或者,如果独立于哪个列被点击,我可以为这个组应用不同的排序标准。我一直在尝试很多东西并寻找答案,我认为这是不可能的,但我不会放弃,至少不会。
我目前的排序代码: 在DisplayProperties中,我存储了一些用户配置,以便在程序再次加载时记住它们。所以基本上:
DisplayProperties.mainListViewColumnSortAsc包含排序顺序:升序或降序。 DisplayProperties.mainListViewColumnsSaved []包含具有mainListView中每列标识的字符串列表。
private void mainListView_ColumnClick(object sender, ColumnClickEventArgs e)
{
if (DisplayProperties.mainListViewColumnsSaved[e.Column] == DisplayProperties.mainListViewColumnSort)
{
if (DisplayProperties.mainListViewColumnSortAsc == SortOrder.Ascending)
DisplayProperties.mainListViewColumnSortAsc = SortOrder.Descending;
if (DisplayProperties.mainListViewColumnSortAsc == SortOrder.Descending)
DisplayProperties.mainListViewColumnSortAsc = SortOrder.Ascending;
}
else DisplayProperties.mainListViewColumnSort = DisplayProperties.mainListViewColumnsSaved[e.Column];
mainListView.ListViewItemSorter = Sorter;
if (!(mainListView.ListViewItemSorter is ListViewSorter))
return;
Sorter = (ListViewSorter)mainListView.ListViewItemSorter;
if (Sorter.LastSort == e.Column)
{
if (mainListView.Sorting == SortOrder.Ascending)
mainListView.Sorting = SortOrder.Descending;
else
mainListView.Sorting = SortOrder.Ascending;
}
else
mainListView.Sorting = DisplayProperties.mainListViewColumnSortAsc;
Sorter.ByColumn = e.Column;
DisplayProperties.mainListViewColumnSortAsc = mainListView.Sorting;
DisplayProperties.mainListViewColumnSort = DisplayProperties.mainListViewColumnsSaved[e.Column];
mainListView.Sort();
}
这是winforms/wpf/webforms?我们将需要更多信息。 – Joe
对不起。这是使用winforms ListView。有些复杂的解释,但基本上我正在寻找的是一种排序方式,而不影响特定的一组文件。 – marine05