2
我可以假设元素从IList<T>
顺序保持平等的,当我使用它作为一个BindingSource
(Windows窗体)的DataSource
,使BindingSource.Position
和List.IndexOf()
是等价的同一个对象?的BindingList用的IList <T>数据源,元订购
这对我很重要,因为Find
不支持那些不BindingList
名单,所以我用的是普通的老IList.IndexOf
方法来确定元素的位置:
myBindingSource.Position = myItemList.IndexOf(myItem);
显然,这工作正常。但我不知道我是否还不知道我是否真的可以依靠这个工作。我有点担心,因为BindingList
的List
财产将数据复制到新表结构(见DataSource
备注)...
欢呼声中,马蒂亚斯
谢谢大卫。我从“IList”填充数据源(反之亦然)。不知道我是否准确地描述了这一点,或误解了你。我很抱歉。无论如何,所以你认为我不应该依赖索引和位置等同? –
2011-03-18 12:29:17
@Mudu:也许我不确定你在寻找索引的不可变性。但基本上,一旦IList(假设实现本身没有被破坏)的给定实现被实例化,其中的任何给定元素在该对象的整个生命周期中将具有相同的索引。 (当然,除非你添加/删除元素。) –
David
2011-03-18 12:32:21
Ouch,在我原来的问题中致命的错字:'BindingSource',而不是'BindingList'(上面已经纠正)。我不确定'DataSource'属性是否混淆了元素顺序,因为数据(我想)是从列表中复制到'IBindingList'中的,然后再暴露给绑定控件。但是,这些都是列表,所以我现在有信心他们会保持订单,就像你上面写的一样。 :) – 2011-03-18 12:40:54