Vb.net 在列中显示行号
问题:: 如何在第二列的文件中显示行号 示例:Vb.net 在列中显示行号,vb.net,Vb.net,问题:: 如何在第二列的文件中显示行号 示例:Test.txt包含: asdasd 种皮 格特 更好 所以我搜索文本“Better”,并在第2列中显示它是在文件的第4行找到的。我认为您试图在一行中做的太多了。我把它分成两步。记住Linq是在幕后执行循环的,所以它确实不应该减慢代码的速度 在循环中更新用户界面会减慢代码的速度。我将ListViewItems累积到一个列表中,然后在循环结束后立即添加它们 通过添加行计数器来确定行号。它在内部循环中递增,对于外部循环中的每个文件重置为1。因为人类从1开
Test.txt
包含:
asdasd
种皮
格特
更好
所以我搜索文本“Better”,并在第2列中显示它是在文件的第4行找到的。我认为您试图在一行中做的太多了。我把它分成两步。记住Linq是在幕后执行循环的,所以它确实不应该减慢代码的速度 在循环中更新用户界面会减慢代码的速度。我将ListViewItems累积到一个列表中,然后在循环结束后立即添加它们 通过添加行计数器来确定行号。它在内部循环中递增,对于外部循环中的每个文件重置为1。因为人类从1开始计数,所以我使用的是1,而不是计算机的计数系统从0开始
Dim files = From file In Directory.EnumerateFiles(txtFolder.Text, txtType.Text, SearchOption.AllDirectories)
From line In System.IO.File.ReadLines(file) Where line.Contains(txtFindWhat.Text) Select New With {file, line}
For Each f In files
Dim item As New ListViewItem($"{f.file}") 'First Column File Localtion
item.SubItems.Add($"{f}") 'Second Column Add The line number where found the text
item.SubItems.Add($"{f.line}") 'Third Column Text Search
ListView1.Items.Add(item) 'Add Records
Next
你知道
For
循环和For每个
循环之间的区别吗?谢谢你提供的信息,我将尝试对此进行更多的研究,以确保它有效。
Private Sub OPCode()
Dim files = Directory.EnumerateFiles(txtFolder.Text, txtType.Text, SearchOption.AllDirectories)
Dim lst As New List(Of ListViewItem)
For Each f In files
Dim lineNumber As Integer = 1
Dim lines = File.ReadAllLines(f)
For Each line In lines
If line.Contains(txtFindWhat.Text) Then
Dim li As New ListViewItem(f)
li.SubItems.Add(lineNumber.ToString)
li.SubItems.Add(line)
lst.Add(li)
End If
lineNumber += 1
Next
Next
ListView1.Items.AddRange(lst.ToArray)
End Sub