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