Dobrý den, chci si upravit richTextBox k obrazu svému a tak jsem začal psát takovou třídu:
Public Class RichTextBoxExtended
Inherits RichTextBox
'my add
Public Sub add(ByVal line As String)
MyBase.AppendText(line + Environment.NewLine)
End Sub
Public Function deleteLine(ByVal index As Integer) As Boolean
If MyBase.Lines.Count() - 1 < index Then
Return False
End If
Dim currentLine As Integer
Dim length As Integer
Dim savePrevClipboard As String
currentLine = MyBase.GetFirstCharIndexFromLine(index)
length = MyBase.Lines(index).Length
MyBase.Select(currentLine, length)
savePrevClipboard = Clipboard.GetText()
MyBase.Cut()
Clipboard.SetText(savePrevClipboard)
Return True
End Function
end Class
Třídu používám takto:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim addRange As New Button
Dim rtbe As New RichTextBoxExtended
'add lines
For i As Integer = 0 To 50
'rtbe.add("This is my " + CStr(i) + " line added")
rtbe.AppendText("This is my " + CStr(i) + " line added" + Environment.NewLine)
Next
'delete line
rtbe.deleteLine(30)
rtbe.Dock = DockStyle.Fill
Me.Controls.Add(rtbe)
End Sub
End Class
Problém je, že MyBase.GetFirstCharIndexFromLine(index) vrací nějakou divnou hodnotu z řádku 16. Navíc, když jsem počítal délku length jako rozdíl
length=MyBase.GetFirstCharIndexFromLine(index+1)- MyBase.GetFirstCharIndexFromLine(index)
Délka byla také spočítána nějak divně, vrátilo to hodnotu 14 místo 23. Nevíte kde by mohl být problém? Díky, PetrS
|