2 minutes
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
Thoughts on this post? Feel free to reach out on Bluesky!