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

ListView加载文本文件时首项重复添加问题求助

问题原因与修复方案

你的问题出在循环中索引变量i没有随循环推进更新,导致每次检测到^^时,都在重复读取第一组数据。

修复方案一:使用For循环直接控制索引(推荐)

这种方式更直观,因为你的数据是按^^ + 名称 + 价格的固定3行一组格式存储的,直接按步长3遍历即可:

Dim rtb As New RichTextBox
rtb.Text = IO.File.ReadAllText("C:\Users\JohnDoe\OneDrive\Desktop\My Visual Basic Program 'calculator' Files\nslm.txt")

' 按3行一组的步长遍历,避免重复处理
For i As Integer = 0 To rtb.Lines.Length - 1 Step 3
    If rtb.Lines(i) = "^^" Then
        Dim item As New ListViewItem
        item.Text = rtb.Lines(i + 1)
        item.SubItems.Add(rtb.Lines(i + 2))
        ListView1.Items.Add(item)
    End If
Next

修复方案二:在For Each循环中更新索引

如果坚持用For Each,需要在每次循环后手动递增i,让它跟踪当前行的位置:

Dim rtb As New RichTextBox
rtb.Text = IO.File.ReadAllText("C:\Users\JohnDoe\OneDrive\Desktop\My Visual Basic Program 'calculator' Files\nslm.txt")

Dim i As Integer = 0
For Each line As String In rtb.Lines
    If line = "^^" Then
        Dim item As New ListViewItem
        item.Text = rtb.Lines(i + 1)
        item.SubItems.Add(rtb.Lines(i + 2))
        ListView1.Items.Add(item)
    End If
    ' 每次循环后更新索引,确保指向当前行
    i += 1
Next

为什么原来的代码会重复添加首项?

你原来的代码里,i初始化为0后就再也没变动过。你的文本文件里有2个^^标记,每次碰到^^时,都会读取rtb.Lines(0+1)和rtb.Lines(0+2)(也就是Healthy Apple和290),所以会重复添加2次,刚好等于你的总项数。

内容的提问来源于stack exchange,提问作者jacobsatorius

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:42:45