Я знаю, что многие спрашивают, как это делается, но я не понимаю, в каком контексте использовать ответы, поэтому ...
Я создаю редактор кода для подрывной деятельности языка Python и нашел очень приличный способ выделения ключевых слов в RichTextBox с помощью этого:
bluwords.Add(KEYWORDS GO HERE)
If scriptt.Text.Length > 0 Then
Dim selectStart2 As Integer = scriptt.SelectionStart
scriptt.Select(0, scriptt.Text.Length)
scriptt.SelectionColor = Color.Black
scriptt.DeselectAll()
For Each oneWord As String In bluwords
Dim pos As Integer = 0
Do While scriptt.Text.ToUpper.IndexOf(oneWord.ToUpper, pos) >= 0
pos = scriptt.Text.ToUpper.IndexOf(oneWord.ToUpper, pos)
scriptt.Select(pos, oneWord.Length)
scriptt.SelectionColor = Color.Blue
pos += 1
Loop
Next
scriptt.SelectionStart = selectStart2
End If
(scriptt - это richtextbox)
Но когда набирается какой-либо приличный объем кода (или загружается через OpenFileDialog), фрагменты кода пропадают, выбор синтаксиса распадается, и он просто разрушает его.
Я ищу более эффективный способ сделать это, может быть, что-то более похожее на саму Visual Studio ... потому что НЕ НУЖНО выделять весь текст, ставить его черным, а затем повторять весь синтаксис, и текст начинает перегружаться -правильно, если вы вернетесь, чтобы вставить символы между текстом.
Кроме того, в этой версии Python хеш (#) используется для комментариев только к строкам комментариев, а двойной хеш (##) используется для комментариев в той же строке.
Теперь я увидел, что кто-то спросил об этой точной вещи, и рабочий ответ для выбора до конца строки был что-то вроде: ^ \ '[^ \ r \ n] + $ |' '[^ \ r \ n] + $
который я, кажется, не могу получить на практике.
Я также хотел выделить текст между кавычками и сделать его бирюзовым, например между первой кавычкой и вторым, текст бирюзовым и таким же между 3-м и 4-м и так далее ...
Любая помощь приветствуется!