|
|
1
11
丹·布莱恩特在他的评论中得到了大部分答案。 这里发生的事是在做绳索实习生。当您创建一组具有相同值的字符串时,.NET通过让所有对同一字符串值的引用实际上引用同一字符串对象来节省内存使用量。(见 this 例如,有关详细信息。)
我真的不知道为什么列表框的行为和它的行为完全一样,也就是说,当您第一次选择列表中的任何项目时,它会同时选择该项目和列表中的第一个项目。但当您单击一个新项目时,它不会取消选择,因为它会检查
通过将列表框绑定到测试对象集合,我得到了完全相同的行为:
在
在
|
|
|
2
7
我也遇到了这个问题,.NET以一种奇怪的方式处理字符串以改进内存管理。 我最直接的解决方法是创建一个uniquelistem类来代替我计划添加到列表框中的字符串。
由于此对象的每个实例都将获得自己的内存位置,因此将此对象的实例添加到列表框控件而不是添加字符串将导致唯一的选择,即使列表框中显示的字符串相同。
我不能说这是否是最好的解决方案(这取决于您的项目的需求),但希望有人会发现这很有用。 |