Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
clovett posted this sample of a progress bar that does not
progress to GDN at some point in the past and I had occasion to use it
today. Using irrational coder logic, I decided that converting it to VB, so I
could place it directly in my application, was faster than modifying his sample
into a component...

Anyway, explanations aside; here is the
code in VB
Imports System
Imports System.Drawing
Imports System.Drawing.Drawing2D
Public Class InfiniteProgress
Inherits System.Windows.Forms.Control
Dim WithEvents tmr As Timer
Dim m_Color1 As Color = Color.White
Dim m_Color2 As Color = Color.Blue
Dim m_Increment As Integer = 5
<ComponentModel.Category("Appearance")> _
Public Property Color1() As Color
Get
Return m_Color1
End Get
Set(ByVal Value As Color)
m_Color1 = Value
End Set
End Property
<ComponentModel.Category("Appearance")> _
Public Property Color2() As Color
Get
Return m_Color2
End Get
Set(ByVal Value As Color)
m_Color2 = Value
End Set
End Property
<ComponentModel.Category("Appearance")> _
Public Property Increment() As Integer
Get
Return m_Increment
End Get
Set(ByVal Value As Integer)
m_Increment = Value
End Set
End Property
Dim Position As Single = 0
Public Sub New()
Me.SetStyle(ControlStyles.DoubleBuffer, True)
End Sub
Protected Overrides Sub OnPaint( _
ByVal e As System.Windows.Forms.PaintEventArgs)
Dim b As New LinearGradientBrush( _
Me.Bounds, Me.Color1, Me.Color2, _
LinearGradientMode.Horizontal)
b.WrapMode = Drawing.Drawing2D.WrapMode.TileFlipX
b.TranslateTransform(Position, 0, MatrixOrder.Append)
e.Graphics.FillRectangle(b, 0, 0, Me.Width, Me.Height)
b.Dispose()
MyBase.OnPaint(e)
End Sub
Private Sub tmr_Tick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles tmr.Tick
Position += m_Increment
If Position > Me.Width Then
Position = -Me.Width
End If
Me.Invalidate()
End Sub
Protected Overrides Sub _
OnVisibleChanged(ByVal e As System.EventArgs)
If Me.Visible Then
If tmr Is Nothing Then
tmr = New Timer()
tmr.Interval = 20
End If
tmr.Start()
Else
If Not tmr Is Nothing Then
tmr.Stop()
End If
End If
MyBase.OnVisibleChanged(e)
End Sub
End Class
Comments
- Anonymous
March 20, 2003
You should make sure that you rate clovett's sample or leave a comment :-)
That's my new crusade ever since I posted my first sample there. It's always good to get feedback.