Public Class ColorfulTextbox
Inherits TextBox
Private Const WM_PAINT As Integer = &HF
Private Const WM_VSCROLL As Integer = &H115
Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
MyBase.OnTextChanged(e)
Me.Invalidate()
End Sub
Protected Overrides Sub WndProc(ByRef wndmsg As System.Windows.Forms.Message)
MyBase.WndProc(wndmsg)
Select Case wndmsg.Msg
Case WM_PAINT
drawRect()
Case WM_VSCROLL
Me.Invalidate()
End Select
End Sub
Sub drawRect()
Dim nRowHeight As Integer = 16
Dim rectF As System.Drawing.RectangleF
Dim nRows As Long = Me.Height / nRowHeight + 1
Dim nlp As Long
Dim clr As Color
clr = Color.Bisque
clr = Color.FromArgb(clr.A / 2, clr.R, clr.G, clr.B)
Dim clearIt As Color = Color.White
clearIt = Color.FromArgb(clearIt.A / 2, clearIt.R, clearIt.G, clearIt.B)
Dim ClearBrush As New SolidBrush(clearIt)
Dim brush As New SolidBrush(clr)
Dim g As Graphics = Me.CreateGraphics()
Dim arLines As String() = Me.Text.Split(vbCrLf)
If UBound(arLines) = 0 Then Exit Sub
Dim bColoringGroup As Boolean = True
Dim bGroupChange As Boolean = False
rectF = New System.Drawing.RectangleF(0, 0, Me.Width, nRowHeight)
g.FillRectangle(brush, rectF)
For nlp = 1 To nRows - 1
If arLines(nlp - 1).Split(" ")(0).Trim = arLines(nlp).Split(" ")(0).Trim Then
bGroupChange = False
Else
bGroupChange = True
bColoringGroup = Not bColoringGroup
End If
If bColoringGroup Then
rectF = New System.Drawing.RectangleF(0, nlp * nRowHeight, Me.Width, nRowHeight)
g.FillRectangle(brush, rectF)
Else
rectF = New System.Drawing.RectangleF(0, nlp * nRowHeight, Me.Width, nRowHeight)
g.FillRectangle(ClearBrush, rectF)
End If
Next
g.Dispose()
brush.Dispose()
End Sub
Sub drawRectOld()
Dim nRowHeight As Integer = 16
Dim rectF As System.Drawing.RectangleF
Dim nRows As Long = Me.Height / nRowHeight + 1
Dim nlp As Long
Dim clr As Color
clr = Color.Bisque
clr = Color.FromArgb(clr.A / 2, clr.R, clr.G, clr.B)
Dim brush As New SolidBrush(clr)
Dim g As Graphics = Me.CreateGraphics()
For nlp = 0 To nRows - 1 Step 2
rectF = New System.Drawing.RectangleF(0, nlp * nRowHeight, Me.Width, nRowHeight)
g.FillRectangle(brush, rectF)
Next
g.Dispose()
brush.Dispose()
End Sub
End Class
ASKER
ASKER
ASKER
ASKER
ASKER
ASKER
ASKER
ASKER
The .NET Framework is not specific to any one programming language; rather, it includes a library of functions that allows developers to rapidly build applications. Several supported languages include C#, VB.NET, C++ or ASP.NET.
TRUSTED BY
http://www.startvbdotnet.com/controls/rtb.aspx