ListBox中如何获取项目索引?我正在像这样向ListBox添加项目:myListBox.Items.addRange(myObjectArray);我还想选择一些这样添加的项目:foreach(MyObjectminotherListOfMyObjects){intindex=myListBox.Items.IndexOf(m);myListBox.SelectedIndices.Add(索引);}但索引始终为-1。有没有不同的方法来获取列表框中对象的索引?您应该确保MyObject覆盖Equals()、GetHashCode()和ToString(),以便IndexOf()方法可以正确找到对象。从技术上讲,无需重写ToString()来进行相等性测试,但它对调试很有用。您可以在列表框中使用某种键作为值,例如GUID。然后您可以轻松地使用myListBox.Items.FindByValue(value)找到正确的项目。IndexOf检查引用,因此如果otherListOfMyObjects中的项目不引用内存中与myListBox.Items完全相同的对象,IndexOf将不起作用。你可以做的是使用linq。下面是一些看起来像C#的伪代码,可以编译并实际工作:varitems=fromxinmyListBox.ItemswhereotherListOfMyObjects.Any(y=>y==x/*SEENOTE*/)selectxforeach(itemiinitems)myListBox.SelectedItems.Add(i);显然这不会起作用,因为y==x将始终返回false(这就是为什么您当前的方法不起作用)。您需要替换y==x来执行相等性比较,这将确定您为MyObject定义的相等性。您可以按照Fallen的建议添加一个ID,或者通过覆盖Neil建议的方法(对它们都为+),或者通过确定要检查MyObject的哪些属性以便将它们识别为完全相同的对象来执行此操作。以上就是C#学习教程:如何获取ListBox中的itemindex?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
