Vb.net IndexOutOfRangeException-RichText
我有一个RichTextBox txt和一个OpenFileDialog Open1。当我尝试以下操作时,在指定行上有一个IndexOutOfRangeException:Vb.net IndexOutOfRangeException-RichText,vb.net,richtextbox,selection,Vb.net,Richtextbox,Selection,我有一个RichTextBox txt和一个OpenFileDialog Open1。当我尝试以下操作时,在指定行上有一个IndexOutOfRangeException: Private Sub OpenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OpenToolStripMenuItem.Click If (Open1.ShowDialog() = System.Windows.Forms.Dia
Private Sub OpenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OpenToolStripMenuItem.Click
If (Open1.ShowDialog() = System.Windows.Forms.DialogResult.OK) Then
fName = Open1.FileName
txt.LoadFile(fName, RichTextBoxStreamType.PlainText)
Dim i As Integer = 0
While i < txt.Lines.Length
AnalyseLine(i)
i = i + 1
End While
End If
End Sub
Private Sub AnalyseLine(ByVal line As Integer)
Select Case txt.Lines(line).Substring(0, 1) '''' EXCEPTION ON THIS LINE ''''
' [...]
End Select
End Sub
一行可能只是一个空字符串我猜的最后一行,所以检查它:
Private Sub AnalyseLine(ByVal line As Integer)
If txt.Lines(line).Length > 0 Then
Select Case txt.Lines(line).Substring(0, 1)
' [...]
End Select
End If
End Sub
分析线有问题。
1您不应该假设行是有效的,应该检查它是否在0范围内。。。如果在while look之外使用,它可能会失败。
2如果txt为空怎么办。它将失败。
3您确实需要检查长度,以查看其是否大于0
4为什么使用子字符串而不是数组索引[0]?您使用的方法仅获取1个字符。糟糕的编码
代码有太多问题。它不会通过同行评审。不,它不起作用,现在它在If语句上抛出异常我让它起作用了,用txt.Text=System.IO.File.ReadAllTextfName替换了txt.LoadFilefName、RichTextBoxStreamType.PlainText,但我仍然不明白。。。
Private Sub AnalyseLine(ByVal line As Integer)
If txt.Lines(line).Length > 0 Then
Select Case txt.Lines(line).Substring(0, 1)
' [...]
End Select
End If
End Sub