Hi,
Ich habe folgenden Code, um nach einem Linksklick einen String zwischen bestimmten Zeichen an der Cursorposition zu finden:
Dies funktioniert auch recht gut, ist aber etwas Fehleranfällig und ich muss dafür auch extra Zeichen in den Text einfügen, die eigentlich nicht reingehören.
Besser wäre zu prüfen, ob die Zeichenfolge an der Cursorposition eine bestimmte Formatierung hat. Wie in meinem Code oben solange links und rechts weitersuchen, bis die Formatierung nicht mehr gefunden wird.
Geht das irgendwie?
Edit: Oder kann ich auch hingehen und die Position abfragen und andererseits die Positionen (Ranges) einer bestimmten Formatierung durchlaufen lassen, wenn diese übereinstimmen, dann Aktion ausführen lassen?
LG,
Pascal
Ich habe folgenden Code, um nach einem Linksklick einen String zwischen bestimmten Zeichen an der Cursorposition zu finden:
VB.NET-Quellcode
- tp_start = rtb_targettext.CaretPosition
- tp_end = rtb_targettext.CaretPosition
- Dim stringBeforeCaret As String = tp_start.GetTextInRun(LogicalDirection.Backward)
- Dim stringAfterCaret As String = tp_start.GetTextInRun(LogicalDirection.Forward)
- Dim countToMoveLeft As Integer = 0
- Dim countToMoveRight As Integer = 0
- Dim boo_trigger As Boolean = False
- For i As Integer = stringBeforeCaret.Length - 1 To 0 Step -1
- If stringBeforeCaret(i) <> "|" Then
- countToMoveLeft += 1
- ElseIf stringBeforeCaret(i) = "|" Then
- countToMoveLeft += 1
- boo_trigger = True
- ElseIf stringBeforeCaret(i) = "+" AndAlso boo_trigger = True Then
- boo_trigger = False
- Exit For
- ElseIf stringBeforeCaret(i) <> "+" AndAlso boo_trigger = True Then
- boo_trigger = False
- countToMoveLeft += 1
- End If
- Next
- For i As Integer = 0 To stringAfterCaret.Length - 1
- If stringAfterCaret(i) <> "|" Then
- countToMoveRight += 1
- ElseIf stringAfterCaret(i) = "|" Then
- countToMoveRight += 1
- boo_trigger = True
- ElseIf stringAfterCaret(i) = "+" AndAlso boo_trigger = True Then
- boo_trigger = False
- Exit For
- ElseIf stringAfterCaret(i) <> "+" AndAlso boo_trigger = True Then
- boo_trigger = False
- countToMoveRight += 1
- End If
- Next
Dies funktioniert auch recht gut, ist aber etwas Fehleranfällig und ich muss dafür auch extra Zeichen in den Text einfügen, die eigentlich nicht reingehören.
Besser wäre zu prüfen, ob die Zeichenfolge an der Cursorposition eine bestimmte Formatierung hat. Wie in meinem Code oben solange links und rechts weitersuchen, bis die Formatierung nicht mehr gefunden wird.
Geht das irgendwie?
Edit: Oder kann ich auch hingehen und die Position abfragen und andererseits die Positionen (Ranges) einer bestimmten Formatierung durchlaufen lassen, wenn diese übereinstimmen, dann Aktion ausführen lassen?
LG,
Pascal
Leider hab ich nicht immer Zeit zum Programmieren, da es eher ein Hobby ist. Falls ich mal im Forum ne Frage stelle und länger nicht antworte, nicht böse sein: Ich bin dann entweder beruflich oder mit der Familie zu sehr eingespannt oder einfach zu müde. Das kann erfahrungsgemäß auch mal über Wochen dauern, aber ich melde mich immer und setze die Frage ggf. auf beantwortet.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Translating-IT“ ()