Indicating Infinite Progress, or lack thereof
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.