C# WinForms ListView-从所选字符串项获取源对象

C# WinForms ListView-从所选字符串项获取源对象,c#,winforms,listview,C#,Winforms,Listview,我正在WinForms中构建一个简单的语言学习助手应用程序。它的一个模块是字典。它由集合组成,单词存储在集合中。用户可以创建一组新单词,并将其中一些单词存储在其中 我正在用列在ListView中打印选定的一个或多个集合中的所有单词。在CheckedListBox中选中一个或多个集合后,列表将清除并将单词作为字符串变量打印 当有几个集合被检查并列出了它们的单词,而用户想要编辑其中一个列出的单词时,麻烦就来了。我不能使用索引,例如列表项的索引等于集合中的单词项,因为这些列表字符串项来自不同的集合 有

我正在WinForms中构建一个简单的语言学习助手应用程序。它的一个模块是字典。它由集合组成,单词存储在集合中。用户可以创建一组新单词,并将其中一些单词存储在其中

我正在用列在ListView中打印选定的一个或多个集合中的所有单词。在CheckedListBox中选中一个或多个集合后,列表将清除并将单词作为字符串变量打印

当有几个集合被检查并列出了它们的单词,而用户想要编辑其中一个列出的单词时,麻烦就来了。我不能使用索引,例如列表项的索引等于集合中的单词项,因为这些列表字符串项来自不同的集合

有没有办法从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);
                }
            }
        }
在这种情况下,程序循环遍历每个集合及其单词列表并打印单词。他们的标记到处都是字典集。

您可以在ListViewItem上使用tag属性。标记属性:

获取或设置一个对象,该对象包含要与该项关联的数据

简而言之,在创建列表视图的每个项目时,可以将对象添加为标记。这样,当用户选择一个项目时,您就可以将其取回


有关详细信息,请参阅。

谢谢您的回答。我已经了解了这一点,但这并不能解决问题:每个集合都是DictionarySet对象,它们存储在一个列表中。当我标记ListView项时,所有项都会得到DictionarySet标记,这样它们就不会有差异。