C# 的 ListView 增删 Item 后,大图 显示 BUG

是这样的,今天这个忙了快一个小时。后来发现不是我的问题,居然是 M$ 的 BUG。.NET 这些奇异半成品地方太多了。

就是在 ListView 中,在 View = Large 下的大图显示方式下,如果有 4 个 items,A,B,C,D。

如果你删了第一个 item A,然后,又把这个 item A 插入原来排在它后面的 item B 后面,理论上,我们在界面上应该看到是这样的顺序,B,A,C,D。

但奇怪的事情就出来了,它显示的是 B,C,D,A。

如果这时候你扫描一下 ListView.Items,就会发现,在 ListViewItemCollection 中,就是我们想要的 B,A,C,D 的顺序,

也就是说,界面上显示的顺序,与 数据列表 中的 顺序,并不一致!

解决方法,修改对齐属性,触发 ListView 中的更新机制:

ListView1.Alignment = ListViewAlignment.Default
ListView1.Alignment = ListViewAlignment.Top

注意,我已经试过了,按上面方式增删了 ListViewItemCollection 内容后,直接调用 ListView1.Refresh() 是没有用的!

解决方法来源:https://stackoverflow.com/questions/5591269/net-inserting-with-index-in-a-listview-in-largeicon-mode-dont-display-inserte

原文地址:https://www.cnblogs.com/pencilstart/p/13866575.html