2015-10-12 63 views
0

我正在WinForms中構建一個簡單的語言學習幫助器應用程序。其中一個模塊是字典。它由「集合」組成,單詞存儲在一個集合中。用戶可以創建一組新的單詞並將其中的一部分存儲在其中。WinForms ListView - 從選定的字符串項目獲取源對象

我正在用列中的ListView打印選定的一個或多個集合中的所有單詞。在檢查CheckedListBox中的Set或Sets時,List清除並打印單詞(作爲字符串變量)。

當有幾個檢查他們的單詞列表,並且用戶想要編輯其中一個列出的單詞時出現問題。我無法使用索引(例如列表項目的index等於集合中的單詞項目),因爲這些列表字符串項目來自不同的集合。

有沒有辦法從ListView項目獲取源對象?我沒有將對象添加到列表中,但僅添加了一些變量,但是它們以某種方式連接?

謝謝你的幫助。 乾杯!

編輯:解釋爲什麼我設置Tag不是一個解決方案: 所有集都存儲在一個List<DictionarySet> dictionarySets。每個集合包含存儲單詞的List<Word> words

如何填充ListView控件:

private void UpdateList() 
     { 
      wordsListView.Items.Clear(); 
      List<Word> currentSetWordList; 

      foreach (DictionarySet ds in setCheckedListBox.CheckedItems) //List<DictionarySets> dictionarySets inserted, DisplayMember set to its Name property 

      { 
       currentSetWordList = ds.words; 
       foreach (Word w in currentSetWordList) 
       { 
        ListViewItem newItem = new ListViewItem("--"); //for now a string, later an enum 
        newItem.Tag = ds; 
        newItem.SubItems.Add(w.GermanTranslation); //string property 
        newItem.SubItems.Add(w.PolishTranslation); //string property 

        wordsListView.Items.Add(newItem); 
       } 
      } 
     } 

在這種情況下,程序遍歷每個集及單詞列表,並打印的話。他們的標籤到處都是DictionarySet。

回答

0

您可以使用ListViewItem上的Tag屬性。標籤屬性:

獲取或設置一個包含與該項目關聯的數據的對象。

簡而言之,當您創建列表視圖的每個項目時,您可以添加您的對象作爲標記。這樣,當用戶選擇一個項目時,您將能夠恢復它。

有關詳細信息,請參閱MSDN

+0

謝謝你的回答。我已經瞭解到,但它不能解決問題:每個Set都是一個DictionarySet對象,它們存儲在一個List 中。當我標記ListView項目時,它們都得到'DictionarySet'標籤,所以它們沒有區別。 – Dandry