我正在尝试单独读取文本框中的每一行,并检查它是否包含某个字符串。这将在文本框的textchanged事件中用于检查某个字符串,如果找到它将执行相应的代码。
我无法让它正常工作。这是我的代码。
Dim txt As FastColoredTextBox = TryCast(page.Controls(0), FastColoredTextBox)
For Each line As Line In txt.Lines
If CBool(InStr(line.ToString(), "<vb>")) Then
txt.Language = Language.VB
End If
答案 0 :(得分:1)
FastColoredTextBox.Lines是一个List(Of String),所以你可以用这种方式循环上行
Dim txt As FastColoredTextBox = TryCast(page.Controls(0), FastColoredTextBox)
For Each line As String In txt.Lines
If line.IndexOf("<vb>", StringComparison.OrdinalIgnoreCase) > 0 Then
txt.Language = Language.VB
Exit For ' If this is all you have to do exit immediatly
End If
Next
编辑:
Exit For允许打破循环而不搜索不感兴趣的后续行。当然,如果您有其他if
,则应删除Exit For。
另请注意,在我的回答中,您不必创建控件中已有的所有字符串的不必要数组。
而最后一点,为什么现在使用旧式Instr(VB6)我们有一大堆字符串工具
答案 1 :(得分:0)
所以我猜你正在使用CodeProject.com网站上的FastColoredTextBox,对吗?
首先尝试将文本框的文本拆分为相应的行:
Dim txt As FastColoredTextBox = TryCast(page.Controls(0), FastColoredTextBox)
Dim Lines as string() = txt.Text.Split(VbCrLf)
For Each line As String In txt.Lines
CBool(InStr(line, "<vb>")) Then
txt.Language = Language.VB
End If
答案 2 :(得分:0)
为什么你要走很长的路,我现在用以下简短的代码做到了:
For i = 0 To Val(TextBox1.Lines.Count)-1
If TextBox1.Lines(i).ToString.StartsWith("OS Version:") Then
Label9.Text = TextBox1.Lines(i).ToString
Exit For
Exit Sub
End If
Next