Da du scheinbar auch Text ersetzen möchtest:
Public Class RichTextBoxEx
Inherits System.Windows.Forms.RichTextBox
Private pSearchIndex As Integer
Public Property SearchIndex() As Integer
Get
Return pSearchIndex
End Get
Set(ByVal value As Integer)
pSearchIndex = value
End Set
End Property
''' <summary>
''' Durchsucht den Text nach einer bestimmten Zeichenkette und markiert die
' nächste gefundene Übereinstimmung
''' </summary>
''' <param name="Search">Enthält die zu suchende Zeichenkette</param>
''' <param name="SearchOptions">Enthält die Suchoptionen</param>
''' <returns>true, wenn der Suchbegriff mit den angegebenen Suchoptionen
' gefunden wurde, andernfalls false</returns>
''' <remarks></remarks>
Public Function SearchString(ByVal Search As String, ByVal SearchOptions As _
Windows.Forms.RichTextBoxFinds) As Boolean
' Index für übereinstimmende Zeichenkette; -1, wenn nicht gefunden
Dim i As Integer
Try
If (SearchOptions And Windows.Forms.RichTextBoxFinds.Reverse) = _
Windows.Forms.RichTextBoxFinds.Reverse Then
' Ausführen, wenn Suchrichtung aufwärts ist
i = Me.Find(Search, 0, Me.SearchIndex, SearchOptions)
Else
' Ausführen, wenn Suchrichtung abwärts ist
i = Me.Find(Search, Me.SearchIndex, SearchOptions)
End If
Catch ex As Exception
End Try
If i < 0 Then
' Ausführen, wenn Zeichenkette nicht vorhanden ist
Me.Focus()
Return False
Else
' Ausführen, wenn Zeichenkette vorhanden ist
Me.SearchIndex = i + 1
Me.Focus()
Return True
End If
End Function
''' <summary>
''' Durchsucht den Text nach einer bestimmten Zeichenkette, ersetzt diese
' mit einer neuen Zeichenkette und markiert die nächste gefunde
' Übereinstimmung
''' </summary>
''' <param name="OldValue">Enthält die zu suchende Zeichenkette</param>
''' <param name="NewValue">Enthält die neue Zeichenkette</param>
''' <param name="ReplaceAll">Bestimmt, ob alle Übereinstimmungen ersetzt
' werden sollen</param>
''' <param name="SearchOptions">Enthält die Suchoptionen</param>
''' <remarks></remarks>
Public Sub ReplaceString(ByVal OldValue As String, ByVal NewValue As String, _
ByVal ReplaceAll As Boolean, ByVal SearchOptions As _
Windows.Forms.RichTextBoxFinds)
If ReplaceAll Then
Do Until SearchString(OldValue, SearchOptions) = False
If Me.SelectedText.Length > 0 Then
Me.SelectedText = NewValue
End If
Loop
SearchIndex = 0
Else
If Me.SelectedText.Length > 0 Then
Me.SelectedText = NewValue
End If
End If
Call SearchString(OldValue, SearchOptions)
End Sub
Private Sub Editor_SelectionChanged(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles MyBase.SelectionChanged
SearchIndex = Me.SelectionStart
End Sub
End Class Damit sollte das nun funktionieren. |