«Положение каретки» в VB.NET для подсветки синтаксиса - PullRequest
0 голосов
/ 17 декабря 2009

Я пытаюсь создать TextBox с подсветкой синтаксиса (для (HTML / CSS) в VB.NET 2008.

Я подумал, что если я использую RichTextBox.Find (), я могу раскрасить определенный текст, но тогда мне нужно вызвать RichTextBox.DeselectAll ().

Проблема в том, что курсор переходит на начало RTB.

Я использую WinForms.
Есть идеи?

Ответы [ 2 ]

3 голосов
/ 17 декабря 2009

Вы можете получить и установить позицию курсора, используя свойство SelectionStart.

Следовательно, вы можете написать,

Dim selStart As Integer = rtb.SelectionStart
'Do things
rtb.SelectionStart = selStart
0 голосов
/ 04 июля 2013
Imports System.Text.RegularExpressions

Public Class Form1

'Create a Html Keyword Regex
Dim htmlkeywords As New System.Text.RegularExpressions.Regex("<html>|</html>|<head>|</head>|<meta|<p>|</p>|<div>|</div>")   <----add as many terms as you like between the () don't forget the pipe symbol between each term in the Regex.

'Then in your Richtextbox textchanged event add this 
Private Sub rtText_TextChanged(sender As Object, e As EventArgs) Handles rtText.TextChanged

    Dim selStart As Integer = rtText.SelectionStart

     Do Until False

        For Each keyWordMatch As Match In htmlkeywords.Matches(rtText.Text)

            rtText.Select(keyWordMatch.Index, keyWordMatch.Length)
            rtText.SelectionColor = Color.Purple
            rtText.SelectionStart = rtText.Text.Length 'this puts the caret at the end 
            rtText.SelectionLength = 0                 ' of the word

        Next keyWordMatch

        Exit Do
    Loop

    rtText.SelectionColor = Color.Black
    rtText.SelectionStart = selStart ' this makes sure that if your caret is behind a word and you press enter to move a text down a line; the caret will stay in position on the next line that you start typing on. You can remove this code to see what I'm talking about
End Sub

rtText - мое имя RichTextBox. Это изменит слово, которое вы хотите, на любой цвет, затем измените его обратно на черный, который вы можете изменить, какие цвета и что делать. Надеюсь, это поможет!

...