Чтение строк в текстовом поле индивидуально
Я пытаюсь прочитать каждую строку в текстовом поле в отдельности и проверить, содержит ли она определенную строку. Это будет использоваться в событии textaged в текстовом поле для проверки определенной строки и будет выполнять соответствующий код, если найден.
Я не могу заставить это работать правильно все же. Вот мой код
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 ответа
Я предполагаю, что вы используете FastColoredTextBox с сайта CodeProject.com, верно?
Попробуйте сначала разбить текст в текстовом поле на соответствующие строки:
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
FastColoredTextBox.Lines представляет собой список (из строки), поэтому вы можете просто зациклить строки таким образом
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
РЕДАКТИРОВАТЬ: Выход для позволяет разорвать цикл без поиска в последующих строках, которые не представляют интереса. Конечно, если у вас есть другие if
тогда выход для должен быть удален. Также обратите внимание, что в моем ответе вам не нужно создавать ненужный массив всех строк, уже находящихся в элементе управления. И последнее замечание: зачем использовать старый стиль Instr (VB6), если теперь у нас есть множество инструментов для струнных инструментов?
Почему вы проделали такой долгий путь, я сделал это сейчас с помощью следующего короткого простого кода:
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