Andreas Lohr
Top achievements
Rank 1
Andreas Lohr
asked on 29 Aug 2010, 06:30 PM
hi,
I would need a TextBox (like RadTextBox), that can show line numbers (similar like in VS).
Best regards
Andreas
P.S.: If that is already possible, please let me know !!
I would need a TextBox (like RadTextBox), that can show line numbers (similar like in VS).
Best regards
Andreas
P.S.: If that is already possible, please let me know !!
2 Answers, 1 is accepted
0
Hello Andreas,
Thank you for your question.
RadTextBox does not support adding line numbers. Actually, it internally uses the standard Microsoft TextBox for the textbox part and since the MS textbox does not support this feature, we do not support it as well. If we receive more requests about this feature, we may consider implementing it in one of our future releases.
Let me know if you have any other questions.
Best wishes,
Martin Vasilev
the Telerik team
Thank you for your question.
RadTextBox does not support adding line numbers. Actually, it internally uses the standard Microsoft TextBox for the textbox part and since the MS textbox does not support this feature, we do not support it as well. If we receive more requests about this feature, we may consider implementing it in one of our future releases.
Let me know if you have any other questions.
Best wishes,
Martin Vasilev
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Accepted
Richard Slade
Top achievements
Rank 2
answered on 06 Sep 2010, 10:40 AM
Hi,
Even though it doesn't come with it, you can use a mix of a picture box and a standard rich textbox to do this.
I can't attach a solution here, but follow these steps.
1: New Windows Forms Project.
2: Drag on a picture box and dock it to the left
3: Drag on a Rich Text Box and Dock Fill
4: Add the following code to the code behind:
Even though it doesn't come with it, you can use a mix of a picture box and a standard rich textbox to do this.
I can't attach a solution here, but follow these steps.
1: New Windows Forms Project.
2: Drag on a picture box and dock it to the left
3: Drag on a Rich Text Box and Dock Fill
4: Add the following code to the code behind:
#Region "TextBox_Resize"
''' <summary>
''' TextBox_Resize
''' </summary>
''' <param name="sender">The sender</param>
''' <param name="e">The event arguments</param>
''' <remarks>Invalidates the lines control</remarks>
Private
Sub
TextBox_Resize(
ByVal
sender
As
System.
Object
, _
ByVal
e
As
System.EventArgs)
Handles
RichTextBox1.Resize
PictureBoxLineNumbers.Invalidate()
End
Sub
#End Region
#Region "TextBox1_VScroll"
''' <summary>
''' TextBox_VScroll
''' </summary>
''' <param name="sender">The sender</param>
''' <param name="e">The event arguments</param>
''' <remarks>Invalidates the lines control</remarks>
Private
Sub
SqlRichTextBox_VScroll(
ByVal
sender
As
System.
Object
, _
ByVal
e
As
System.EventArgs)
Handles
RichTextBox1.VScroll
PictureBoxLineNumbers.Invalidate()
End
Sub
#End Region
#Region "PictureBoxLines_Paint"
''' <summary>
''' PictureBoxLines_Paint
''' </summary>
''' <param name="sender">The sender</param>
''' <param name="e">The event arguments</param>
''' <remarks>On Pain, draws the line umbers</remarks>
Private
Sub
PictureBoxLines_Paint(
ByVal
sender
As
System.
Object
, _
ByVal
e
As
System.Windows.Forms.PaintEventArgs)
Handles
PictureBoxLineNumbers.Paint
DrawRichTextBoxLineNumbers(e.Graphics)
End
Sub
#End Region
#Region "DrawRichTextBoxLineNumbers"
''' <summary>
''' DrawRichTextBoxLineNumbers
''' </summary>
''' <param name="g">The graphics parameter</param>
''' <remarks>Draws teh line numbers on the picture box</remarks>
Private
Sub
DrawRichTextBoxLineNumbers(
ByVal
g
As
System.Drawing.Graphics)
If
True
Then
Dim
font_height
As
Single
= 0
font_height = _
RichTextBox1.GetPositionFromCharIndex(RichTextBox1.GetFirstCharIndexFromLine(2)).Y - _
RichTextBox1.GetPositionFromCharIndex(RichTextBox1.GetFirstCharIndexFromLine(1)).Y
If
font_height = 0
Then
font_height = 13
End
If
'Get the first line index and location
Dim
first_index
As
Integer
= 0
Dim
first_line
As
Integer
= 0
Dim
first_line_y
As
Integer
= 0
first_index = RichTextBox1.GetCharIndexFromPosition(
New
Point(0, Convert.ToInt32(g.VisibleClipBounds.Y + font_height / 3, CultureInfo.InvariantCulture)))
first_line = RichTextBox1.GetLineFromCharIndex(first_index)
first_line_y = RichTextBox1.GetPositionFromCharIndex(first_index).Y
'Print on the PictureBox the visible line numbers of the RichTextBox
g.Clear(Control.DefaultBackColor)
Dim
i
As
Integer
= first_line
Dim
y
As
Single
= 0
While
y < g.VisibleClipBounds.Y + g.VisibleClipBounds.Height
y = first_line_y + 2 + font_height * (i - first_line - 1)
Dim
s2
As
Single
= PictureBoxLineNumbers.Width - g.MeasureString((i).ToString(CultureInfo.InvariantCulture), RichTextBox1.Font).Width
If
i > 0
Then
g.DrawString(i.ToString(CultureInfo.InvariantCulture), RichTextBox1.Font, Brushes.Black, s2, y)
End
If
i += 1
End
While
End
If
End
Sub
#End Region