Hi,
ich würde mir noch wünschen, dass Klammern wenigstens hervorgehoben werden. Also wenn der Cursor an einer öffnenden Klammer ist, soll diese und die dazugehörige schließende Klammer farblich hervorgehoben werden (Verschachtelung berücksichtigt, und dasselbe natürlich auch umgekehrt, also wenn Cursor an schließender Klammer, entsprechend die öffnende hervorheben).
Hab dir mal eben eine Art Vorlage zusammengewurschtelt:
Spoiler anzeigen
Ist auf die schnelle zusammengefummelt, aber funktioniert super
Bild:
Download: beispiel_exe_datei.rar
Link
ich würde mir noch wünschen, dass Klammern wenigstens hervorgehoben werden. Also wenn der Cursor an einer öffnenden Klammer ist, soll diese und die dazugehörige schließende Klammer farblich hervorgehoben werden (Verschachtelung berücksichtigt, und dasselbe natürlich auch umgekehrt, also wenn Cursor an schließender Klammer, entsprechend die öffnende hervorheben).
Hab dir mal eben eine Art Vorlage zusammengewurschtelt:
VB.NET-Quellcode
- Imports System.Text.RegularExpressions
- Public Class frmMain
- Sub test()
- Dim ci As Integer = rtbCalc.SelectionStart
- Dim sl As Integer = rtbCalc.SelectionLength
- rtbCalc.SelectionLength = 1
- Dim p As String = rtbCalc.SelectedText
- rtbCalc.SelectionLength = 0
- rtbCalc.SelectionStart = 0
- rtbCalc.SelectionLength = rtbCalc.TextLength
- rtbCalc.SelectionBackColor = ColorTranslator.FromHtml("#ffffff")
- rtbCalc.SelectionColor = ColorTranslator.FromHtml("#000000")
- rtbCalc.SelectionLength = 0
- If p = "(" Then 'Wenn öffnende Klammer gefunden wird, suche nach schließender
- 'Skip ist dazu da, um einen Fund zu überspringen, wenn während des Durchlaufs eine
- 'weitere öffnende Klammer gefunden wird. Sonst funktioniert es für verschachtelte
- 'Klammern nicht
- Dim skip As Integer = 0
- For i As Integer = ci To rtbCalc.TextLength
- If rtbCalc.Text(i) = "(" Then
- skip += 1
- Continue For
- End If
- If rtbCalc.Text(i) = ")" Then
- skip -= 1
- If skip > 0 Then
- Continue For
- End If
- rtbCalc.SelectionStart = i
- rtbCalc.SelectionLength = 1
- rtbCalc.SelectionBackColor = ColorTranslator.FromHtml("#aaaaaa")
- rtbCalc.SelectionColor = ColorTranslator.FromHtml("#ffffff")
- rtbCalc.SelectionStart = ci
- rtbCalc.SelectionLength = 1
- rtbCalc.SelectionBackColor = ColorTranslator.FromHtml("#aaaaaa")
- rtbCalc.SelectionColor = ColorTranslator.FromHtml("#ffffff")
- Exit For
- End If
- Next
- End If
- If p = ")" Then 'Wenn schließende Klammer gefunden wird, suche nach öffnender
- Dim skip As Integer = 0
- For i As Integer = ci To 0 Step -1
- If rtbCalc.Text(i) = ")" Then
- skip += 1
- Continue For
- End If
- If rtbCalc.Text(i) = "(" Then
- skip -= 1
- If skip > 0 Then
- Continue For
- End If
- rtbCalc.SelectionStart = i
- rtbCalc.SelectionLength = 1
- rtbCalc.SelectionBackColor = ColorTranslator.FromHtml("#aaaaaa")
- rtbCalc.SelectionColor = ColorTranslator.FromHtml("#ffffff")
- rtbCalc.SelectionStart = ci
- rtbCalc.SelectionLength = 1
- rtbCalc.SelectionBackColor = ColorTranslator.FromHtml("#aaaaaa")
- rtbCalc.SelectionColor = ColorTranslator.FromHtml("#ffffff")
- Exit For
- End If
- Next
- End If
- rtbCalc.SelectionStart = ci
- rtbCalc.SelectionLength = sl
- rtbCalc.SelectionBackColor = ColorTranslator.FromHtml("#ffffff")
- rtbCalc.SelectionColor = ColorTranslator.FromHtml("#000000")
- End Sub
- Private Sub RichTextBox1_Click(sender As Object, e As EventArgs) Handles rtbCalc.Click
- test()
- End Sub
- Private Sub RichTextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles rtbCalc.KeyUp
- test()
- End Sub
- End Class
Ist auf die schnelle zusammengefummelt, aber funktioniert super
Bild:
Download: beispiel_exe_datei.rar
Link
Hello World