首页 > 解决方案 > 单击按钮时冻结程序

问题描述

代码直接附加到按钮

 Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
        Dim person As String = txtIn.Text
        If person <> "" Then
            If IsInFile(person) Then
                MessageBox.Show("Name Is Already In File!", "No Need")
            Else
                ReDim names(names.Length + 1)
                names(names.Length - 1) = person
                Array.Sort(names)
                MessageBox.Show("Name Added", "Success")
                File.WriteAllLines("Names.txt", names)
            End If

        End If

    End Sub

其余代码

Function IsInFile(person As String) As Boolean
        Dim x As Integer = 0
        Dim lines = File.ReadAllLines("Names.txt").Length
        If File.Exists("Names.txt") Then
            While x <= lines
                If person.ToUpper = names(x).ToUpper Then
                    Return True
                End If
            End While
        End If
        Return False
    End Function

    Private Sub frmNames_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        names = IO.File.ReadAllLines("Names.txt")
    End Sub

只有 Import 是 System.IO 没有调试错误,但是当我在 txtIn 中输入名称并单击按钮时,程序会冻结。名称是否在“names.txt”中并不重要,所以我认为 IsInFile 不是问题

标签: vb.net

解决方案


您的问题是x永远不会<= lines,因为您没有增加它。在循环中包含一个增量:

While x <= lines
    If person.ToUpper = names(x).ToUpper Then
        Return True
    End If
    x += 1
End While

@Hans Passant 在他的评论中提出了很好的建议。如果您不熟悉调试器,在尝试使用该语言执行任何其他任务之前,重新访问与调试 VB.Net 程序相关的基础材料可能会对您有所帮助。这样做可以为您现在和将来节省大量时间。


推荐阅读