我想在ListView中显示文件夹和文件的方式与它们在Windows资源管理器中的方式相同,即首先是文件夹,然后是文件,两个组按字母顺序排序。
我首先想到使用2个ListViewGroup(一个用于文件夹,一个用于文件),但不仅我无法隐藏组头,当ListView处于列表模式时它不活动。
另一个解决方案是保留2个基础列表(一个用于文件夹,一个用于文件),并从2个列表填充ListView(首先是文件夹,然后是文件)。但这似乎有点笨拙,因为每次用户对ListView进行排序时,我必须对我的2个列表进行排序并刷新ListView内容。
有人能建议解决这个问题吗?我觉得有一个简单的答案和/或我在ListView控件中遗漏了一些内容......
答案 0 :(得分:1)
好了之后再多搜索一下我是如何实现的。
我在列表视图中使用了自定义排序功能(请参阅http://support.microsoft.com/kb/319401的方法)。
唯一的变化是ListViewColumnSorter的Compare函数。 如果X和Y项都属于同一类型(文件夹或文件),我会根据项目名称排序返回“正常”结果。如果没有,如果X是文件夹,则返回-1,否则返回1。
这样文件夹总是先出现,文件夹和文件都按字母顺序排序
每个列表视图项获取都会在项目添加到列表时通过其Tag属性标识为文件夹或文件。
答案 1 :(得分:0)
处理此问题的一种方法是对文件夹(左侧)使用TreeView,为文件使用Listview(右侧)。只要树视图中的选择发生更改,您就可以更新Listview中的文件名。