mirror of
https://github.com/staxrip/staxrip.git
synced 2026-10-19 06:59:04 +08:00
94 lines
2.3 KiB
VB.net
94 lines
2.3 KiB
VB.net
|
|
Imports System.Text
|
|
Imports System.Text.RegularExpressions
|
|
Imports StaxRip.UI
|
|
|
|
Public Class CodeForm
|
|
Property Find As String
|
|
Property Content As String
|
|
|
|
Sub New(text As String, find As String, Optional wordwrap As Boolean = False)
|
|
InitializeComponent()
|
|
|
|
RestoreClientSize(50, 35)
|
|
|
|
rtb.ReadOnly = True
|
|
rtb.WordWrap = wordwrap
|
|
rtb.Font = FontManager.GetCodeFont()
|
|
rtb.Text = text
|
|
|
|
Me.Find = find
|
|
Content = text
|
|
|
|
ApplyTheme()
|
|
|
|
AddHandler ThemeManager.CurrentThemeChanged, AddressOf OnThemeChanged
|
|
End Sub
|
|
|
|
Protected Overrides Sub Dispose(disposing As Boolean)
|
|
RemoveHandler ThemeManager.CurrentThemeChanged, AddressOf OnThemeChanged
|
|
components?.Dispose()
|
|
MyBase.Dispose(disposing)
|
|
End Sub
|
|
|
|
Sub OnThemeChanged(theme As Theme)
|
|
ApplyTheme(theme)
|
|
End Sub
|
|
|
|
Sub ApplyTheme()
|
|
ApplyTheme(ThemeManager.CurrentTheme)
|
|
End Sub
|
|
|
|
Sub ApplyTheme(theme As Theme)
|
|
If DesignHelp.IsDesignMode Then
|
|
Exit Sub
|
|
End If
|
|
|
|
rtb.ForeColor = theme.General.Controls.RichTextBox.ForeColor
|
|
rtb.BackColor = theme.General.Controls.RichTextBox.BackColor
|
|
End Sub
|
|
|
|
Sub TextHelpForm_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
|
If Find <> "" Then
|
|
FindByIndex(0)
|
|
End If
|
|
End Sub
|
|
|
|
Sub FindByIndex(startIndex As Integer)
|
|
If startIndex >= Content.Length Then
|
|
Exit Sub
|
|
End If
|
|
|
|
rtb.Find(Find, startIndex, RichTextBoxFinds.None)
|
|
rtb.ScrollToCaret()
|
|
|
|
Dim start = rtb.SelectionStart
|
|
|
|
If start > startIndex Then
|
|
While True
|
|
start -= 1
|
|
|
|
If start = 0 Then
|
|
Exit While
|
|
End If
|
|
|
|
Dim ch = Content(start)
|
|
|
|
If ch = BR(1) Then
|
|
Exit While
|
|
End If
|
|
End While
|
|
|
|
If (rtb.SelectionStart - start) > 15 Then
|
|
FindByIndex(rtb.SelectionStart + rtb.SelectionLength)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Sub CodeForm_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
|
|
If e.KeyData = Keys.Escape Then
|
|
Close()
|
|
End If
|
|
End Sub
|
|
End Class
|