Magari questa può essere una buona base di partenza.
Ho utilizzato un timer così puoi riciclare il tuo vecchio codice.
Ovviamente può essere migliorata aggiungendo altre proprietà come ad esempio l'inversione della direzione, il colore, ecc...
Per farlo bene ci vuole un pò di tempo

... a te l'onore (soprattutto l'onere...
Una volta che è perfezionato sostituisci il timer con un BackgroundWorker ed utilizza uno StringBuilder per migliorare le prestazioni.
Poi scrivi l'articolo
Andrea
PS: puoi copiare il codice direttamente nella form.
Public Class Form1
Friend WithEvents MyScrollLabel1 As WindowsApplication1.myScrollLabel
Friend WithEvents Button1 As System.Windows.Forms.Button
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Controls.Add(Me.Button1)
Me.Controls.Add(Me.MyScrollLabel1)
'MyScrollLabel1
Me.MyScrollLabel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.MyScrollLabel1.Location = New System.Drawing.Point(87, 64)
Me.MyScrollLabel1.Name = "MyScrollLabel1"
Me.MyScrollLabel1.Run = False
Me.MyScrollLabel1.Size = New System.Drawing.Size(202, 23)
Me.MyScrollLabel1.Speed = 0
Me.MyScrollLabel1.TabIndex = 0
Me.MyScrollLabel1.Value = "MyScrollLabel from DotNewtWork... "
'Button1
Me.Button1.Location = New System.Drawing.Point(141, 105)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(75, 23)
Me.Button1.TabIndex = 1
Me.Button1.Text = "Start"
Me.Button1.UseVisualStyleBackColor = True
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Me.Button1.Text = "Start" Then
Me.MyScrollLabel1.StartScroll()
Me.Button1.Text = "Stop"
Else
Me.MyScrollLabel1.StopScroll()
Me.Button1.Text = "Start"
End If
End Sub
End Class
Class myScrollLabel
Inherits System.Windows.Forms.Label
Dim _Run As Boolean
Property Run() As Boolean
Get
Return _Run
End Get
Set(ByVal value As Boolean)
If value Then
Me.Timer.Start()
Else
Me.Timer.Stop()
End If
_Run = value
End Set
End Property
Dim _Value As String
Property Value() As String
Get
Return _Value
End Get
Set(ByVal value As String)
_Value = value
End Set
End Property
Dim _Speed As Integer
Property Speed() As Integer
Get
Return _Speed
End Get
Set(ByVal value As Integer)
If value > 0 Then
Me.Timer.Interval = value
End If
_Speed = value
End Set
End Property
Friend Sub StartScroll()
Me.Timer.Start()
End Sub
Friend Sub StopScroll()
Me.Timer.Stop()
End Sub
Dim WithEvents Timer As New System.Windows.Forms.Timer
Dim i As Integer
Private Sub Timer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer.Tick
Me.Text = Me.Value.Substring(i)
i += 1
If i = Me.Value.Length - 1 Then
i = 0
End If
End Sub
End Class