【发布时间】:2016-10-14 15:17:48
【问题描述】:
我正在尝试创建一个程序,该程序将在文本文件中搜索一行文本,然后返回整行信息。
示例行:Joe Blogs JBL 1234
搜索:Joe 博客
搜索返回:Joe Blogs JBL 1234
为了使其尽可能简单,我有 2 个文本框和 1 个按钮。
Textbox1 = 搜索
Textbox2 = 搜索结果
按钮 = 搜索按钮
谁能告诉我该怎么做,因为我发现它真的很难。我是 VB 编码的新手,所以最简单的代码会很有帮助!
这是我目前所拥有的:
Imports System.IO
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Input Text Error
If TextBox1.TextLength = 0 Then
MsgBox("Please enter a Staff Name or Staff Code", MsgBoxStyle.Information, "Error")
End If
'Perform Search
Dim strText As String = SearchFile("F:\Documents\Documents\Visual Studio 2015\Projects\ExtentionLocator\ExtentionLocator\Extentionlist.txt", TextBox1.Text)
If strText <> String.Empty Then
TextBox2.Text = strText
End If
End Sub
'Search Function
Public Shared Function SearchFile(ByVal strFilePath As String, ByVal strSearchTerm As String) As String
Dim sr As StreamReader = New StreamReader(strFilePath)
Dim strLine As String = String.Empty
Try
Do While sr.Peek() >= 0
strLine = String.Empty
strLine = sr.ReadLine
If strLine.Contains(strSearchTerm) Then
sr.Close()
Exit Do
End If
Loop
Return strLine
Catch ex As Exception
Return String.Empty
End Try
End Function
'Clear Button
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
TextBox2.Text = ""
TextBox1.Text = ""
End Sub
' Open The text file
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Process.Start("C:\Users\kylesnelling\Documents\Visual Studio 2015\Projects\ExtentionLocator\ExtentionLocator\Extentionlist.txt")
End Sub
End Class
每当我执行搜索时,我得到的只是文本文件的最后一行...有人知道为什么吗?
【问题讨论】:
-
If strLine.Contains(strSearchTerm)? .此外,您应该将您的StreamReader包含在Using块中,以确保正确处理。 -
加:
Dim strText As String = SearchFile("F:\Documents\Documents\Visual Studio 2015\Projects\ExtentionLocator\ExtentionLocator\Extentionlist.txt", Textbox1.Text)不带双引号。 -
如何将流阅读器封装到块中?我已经进行了您建议的更改,但是每次我搜索某些内容时,它只会显示文档的最后一行,实际上并没有执行搜索
-
你能用你当前的代码编辑你的问题吗?看看这个例子如何使用Using
-
一切都为你完成:)