单独读取文本框中的行

时间:2012-08-29 20:20:44

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

我正在尝试单独读取文本框中的每一行,并检查它是否包含某个字符串。这将在文本框的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

3 个答案:

答案 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