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
相关产品推荐
相关产品推荐

