Advertisement
Advertisement
| 07.17.2008 at 11:40AM PDT, ID: 23574417 |
|
[x]
Attachment Details
|
||
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: |
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
|