2011-09-26 77 views
2

我想在ListView中显示文件夹和文件,就像它们在Windows资源管理器中一样,即文件夹优先,文件优先,字母顺序排序。在ListView中对文件夹和文件进行分组和排序

我首先想到了使用2个ListViewGroup(一个用于文件夹,另一个用于文件),但不仅仅是我不能隐藏组头,当ListView处于List模式时它不是活动的。

另一种解决方案是保留2个基础列表(一个用于文件夹,另一个用于文件),并从2个列表(首先是文件夹,然后是文件)填充ListView。但是这看起来有点笨拙,因为每次用户对ListView进行排序时,我都必须对我的2个列表进行排序并刷新ListView内容。

有人可以建议解决这个问题?我觉得有一个简单的答案和/或我已经错过了ListView控件中的某些东西...

回答

0

处理此问题的一种方法是使用TreeView作为文件夹(左侧)和Listview文件(在右边)。只要树形视图中的选择更改,就可以更新列表视图中的文件名。

+0

谢谢,我已经这样做了,但我也希望右侧的列表视图显示文件夹以及文件。 – JBB

+0

我明白了。您可以使用具有比较功能的ListViewItemSorter类,该功能始终将文件夹置于文件之前。这样listview会做排序,但你可以指定排序的细节。 – xpda

1

确定了一些更多的搜索后,我已经实现了这一点。

我在列表视图中使用了自定义排序功能(请参阅如何在http://support.microsoft.com/kb/319401上进行操作)。

唯一的变化是在ListViewColumnSorter的Compare函数中。 如果X和Y的项目都是相同类型(文件夹或文件),则根据项目名称排序返回“正常”结果。如果不是,如果X是一个文件夹,则返回-1,否则返回1。

方式的文件夹始终是第一位的和这两个文件夹和文件都按字母顺序排序

每个列表视图项获得被确定为它的标签属性设置一个文件夹或文件时,项目被添加到列表中。

相关问题