【问题标题】:VB.net Index Out Of Range ExceptionVB.net 索引超出范围异常
【发布时间】:2023-04-10 12:21:02
【问题描述】:

这个程序加载一个 .txt 文件,用 ":" 分割它,然后取出每个文件并在某处检查它们 每当我的程序到达列表末尾时出现错误这是我的代码

Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
    If ListBox1.Items.Count = 0 Then
        MsgBox("Checking DONE")
    ElseIf ListBox1.Items.Count.ToString > 0 Then

        Dim str As String
        Dim strArr() As String

        str = ListBox1.Items(0)
        strArr = str.Split(":")
        If str.Count > 0 Then
            WebBrowser1.Document.GetElementById("email").SetAttribute("value", (strArr(0)))
            WebBrowser1.Document.GetElementById("password").SetAttribute("value", (strArr(1)))
            WebBrowser1.Document.GetElementById("login-form-contBtn").InvokeMember("click")
            WaitForPageLoad()
            Threading.Thread.Sleep(5000)
            Me.Button2.PerformClick()
        Else
            MsgBox("Done")
        End If
    End If
End Sub

Me.Button2.PerformClick() 也以编程方式单击按钮,然后按两个按钮单击此按钮,它应该继续直到列表框为空,但它只是崩溃/给出the error

这是将列表导入列表框的按钮

OpenFileDialog1.InitialDirectory = "./"
OpenFileDialog1.FileName = "Open a text file..."
OpenFileDialog1.Filter = "Text Files (*.txt) | *.txt"
OpenFileDialog1.ShowDialog()

Dim R As New IO.StreamReader(OpenFileDialog1.FileName)
Dim string1 As String() = R.ReadToEnd().Split(New String(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries))

ListBox1.Items.AddRange(string1)
R.Close()
ListBox1.SelectedItem = ListBox1.Items(0)

Dim str As String
Dim strArr() As String

str = ListBox1.SelectedItem
strArr = str.Split(":") 'Delimits the imported combo list
Label4.Text = (strArr(0)) 'Email
Label3.Text = (strArr(1)) 'Password
Label6.Text = (ListBox1.Items.Count) 'How big is combo?

【问题讨论】:

    标签: arrays vb.net visual-studio-2010 indexing


    【解决方案1】:

    您在 strArr 中拆分 str,但您检查 str.Count

    str = ListBox1.Items(0)
    strArr = str.Split(":")
    If strArr.Count > 0 Then
       ....
    

    以下代码使用 strArr 的索引 0 和索引 1 以便更好地检查

    If strArr.Count > 1 Then
    

    【讨论】:

    • 谢谢!!!大声笑,为什么它的索引是 1 而不是 0? , 只是想增加我的知识
    • NET 中的每个数组都从索引 0 开始。当您在 strArr 中拆分字符串时,Count 表示数组中存在的元素数,因此字符串 XXXXX:YYYYY 在 : 处拆分时变为两个元素数组 strArr(0)=XXXX,strArr(1)=YYYYY。如果没有 : (XXXXXYYYY) 您仍然会从拆分中获得一个数组,但它是一个单元素数组 (strArr(0)=XXXXYYYYY)。如果您尝试在此数组上使用 index=1,则会出现异常,因为索引 1 处没有元素
    • 还是不太明白,不过谢谢大家帮忙:)
    猜你喜欢
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    相关资源
    最近更新 更多