Модификация .net RichTextBox - PullRequest
       4

Модификация .net RichTextBox

0 голосов
/ 02 сентября 2011

Я должен сделать некоторые особые вещи с RichTextBox.Мне нужно добавить подсветку синтаксиса, и я должен быть в состоянии выяснить, какой символ был добавлен / удален / вставлен в какой позиции при каждом нажатии клавиши.Есть ли какой-нибудь способ отредактировать существующий или есть открытый исходный код (совместимый с .net, предпочтительно VB.net), доступный для скачивания?Я пытался сделать свою собственную, проблема в том, что в ней должны быть доступны все функции, и у меня не хватает времени, чтобы все это реализовать.

Спасибо!

1 Ответ

2 голосов
/ 02 сентября 2011

Нет необходимости изобретать колесо здесь. У вас есть два варианта сделать это. Во-первых, вы можете подключиться к событиям, вызываемым вашим RichTextBox, и делать то, что вам нужно:

Private Sub RichTextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
    'Add code to figure out what changed
    'This will most likely involve an variable storing the original text and comparing it to what the
    'RichTextBox now contains
End Sub

Есть несколько проблем с этим. Если вам приходится использовать функциональность во многих формах, вы начинаете дублировать код везде. Вам также понадобятся некоторые вспомогательные переменные для отслеживания этих данных.

Лучшим решением было бы создать собственный класс RichTextBox. Очевидно, что вам не нужно начинать заново с нуля, поэтому вы можете вместо этого наследовать от существующего класса, а затем расширять его, как хотите.

Public Class MyRichTextBox
    Inherits System.Windows.Forms.RichTextBox

    Private oldText As String

    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
        MyBase.OnTextChanged(e)

        If Me.Text <> oldText Then
            'Figure out what changes were made
        End If

        oldText = Me.Text
    End Sub

    Public Sub SyntaxHighlighting()
        'Add code here to highlight syntax within the textbox
    End Sub
End Class

После того, как вы скомпилировали MyRichTextBox, он должен появиться на вкладке Toolbox, а затем вы можете перетащить его в форму.

...