You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:27:03