C# ListView新增项选中后显示数据错误 重启才正常如何解决
问题原因
你的readXMLFile方法未在读取前清空全局movieList列表,每次新增完成后重新读取XML时,会把XML中的全量数据追加到原有movieList的末尾,而非覆盖旧列表:
- 初始状态有N条数据,
movieList长度为N,ListView显示的N条数据和movieList索引一一对应 - 新增1条数据后XML变为N+1条,调用
readXMLFile时未清空旧列表,直接追加N+1条数据,此时movieList总长度变为N + (N+1) - ListView清空后加载的是最新的N+1条数据,和
movieList的后N+1条对应,选中第N+1个新增项时,实际取的是movieList索引N的位置,也就是旧列表的第一条数据,完全匹配你描述的故障现象。程序重启后第一次读取XML时movieList为空,所以数据展示正常。
修复方案
修改你的readXMLFile方法,在读取XML内容的逻辑之前,先清空movieList即可:
private void readXMLFile(string filePath) { // 新增以下代码,清空旧数据避免重复追加 movieList.Clear(); // 原有读取XML、解析Movie对象并加入movieList的逻辑保持不变 // ...... }
可选优化建议
你当前的新增逻辑是写完XML后全量重读、全量刷新ListView,也可以选择不重读XML,直接将新增的Movie对象追加到movieList,同时新增对应ListView项,性能开销更低。
内容的提问来源于stack exchange,提问作者Bly
相关产品推荐
相关产品推荐

