2011-09-26 76 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。

方式的文件夾始終是第一位的和這兩個文件夾和文件都按字母順序排序

每個列表視圖項獲得被確定爲它的標籤屬性設置一個文件夾或文件時,項目被添加到列表中。

相關問題