2011-11-06 23 views
1

我正在製作一個Windows窗體項目,該窗體項目將在業餘時間搜索指定文件夾中的文件。到目前爲止,我已經有了像在Windows資源管理器中一樣顯示文件夾的TreeView。添加「標記」屬性到列表框的項目,如TreeView的節點?

我也有一個ListBox來存儲所有的搜索結果。當我雙擊列表中的一個項目時,我想要打開文件的選項。

到目前爲止,我看到這樣的三種方式:

  1. 具有列表框顯示的完整路徑。
  2. 使用全局列表或數組來跟蹤完整路徑,而ListBox僅顯示文件名。然後使用索引匹配相應的項目。
  3. 爲每個ListBox的項目添加一個「Tag」屬性,就像TreeView的節點一樣。

對我來說,第三種方法是最吸引人的,但我不知道從哪裏開始。直到現在,我一直在擺弄一個控制庫無濟於事。

我希望能夠讓標籤以類似於TreeView的方式工作。因此,如果前者不可行,則檢索標籤並設置標籤的代碼看起來像ListBox1.Items[i].TagListBox1.Tag[i]

任何幫助將不勝感激。

回答

2

您應該創建一個具有返回完整路徑屬性的自定義SearchResult類。
該類應覆蓋ToString()並返回要在列表框中顯示的文本。

然後,您可以將類的實例直接放入列表框中,並將列表框中的項目轉換回該類以獲取該屬性。

+0

工作就像一個魅力。謝謝! – Netfangled

1

我會做一個自定義類來表示列表中的項目。您有代表要顯示的值的屬性(不是字段!),並且您可以在列表框的.DisplayMember和.ValueMember屬性中輸入該屬性名稱。無論DisplayMember返回的是什麼,都將顯示爲該項目的文本,並且.ValueMember返回的內容將是.SelectedValue返回的內容。您將能夠直接訪問.SelectedItem以獲取所選的確切項目。這樣你可以存儲任何你想要的項目。如果您沒有指定.DisplayMember,則列表框將在該項目上使用.ToString函數。

相關問題