Existe-t-il un code texte défilant Visual Basic 2008?
Question
Je souhaite un code qui, lorsqu'il est appliqué au texte dans Visual Basic 2008, défile à l'écran. Je ne veux rien de brillant, juste quelque chose de fondamental pour commencer. Si vous connaissez une telle chose, ce serait génial!
EDIT:
Je voudrais que ça roule, j'espère que ça rend les choses plus faciles!
La solution
Ce dont vous avez besoin: une seule étiquette, vous pouvez l'appeler n'importe quoi mais dans ce cas-ci, Label1 est notre étiquette et le nom du fichier de formulaire est Form1.vb, mais vous pouvez bien sûr le modifier.
Ce que vous devez encore faire: Modifiez le texte scrollLabel (15) dans les deux cas pour le rendre aussi rapide que vous le souhaitez. Le temps est en millisecondes, entre les itérations.
Il existe probablement un meilleur moyen de le faire, mais voici mon meilleur plan:
Public Class Form1
Dim IsClosed As Boolean = False
Private Sub wait(ByVal time)
Dim sw As New Stopwatch
sw.Start()
Do While sw.ElapsedMilliseconds < time
Application.DoEvents() 'Lets our UI remain active
Loop
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
IsClosed = True
End Sub
Private Sub Form1_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
scrollLabel(15)
End Sub
Private Sub scrollLabel(ByVal time)
Dim passed As Boolean = False 'Indicates whether or not we have passed the initial bounds of the form
Dim startX As Integer = Label1.Bounds.X
For i As Integer = 0 To Me.Bounds.Width + Label1.Bounds.Width Step 1
wait(time)
Label1.SetBounds(Label1.Bounds.X - 1, Label1.Bounds.Y, Label1.Bounds.Width, Label1.Bounds.Height)
If i > Me.Width - startX And passed = False Then
Label1.SetBounds(Me.Width, Label1.Bounds.Y, Label1.Bounds.Width, Label1.Bounds.Height)
passed = True
End If
If IsClosed = True Then
Return
End If
Next
scrollLabel(15)
End Sub
End Class
Notez comment IsClosed permet de rompre la boucle pour garantir que l'application ne continue pas une fois qu'elle est fermée.
De même, si l'utilisateur a redimensionné le formulaire en cours de défilement, le libellé risque de sauter lorsque celui-ci apparaît sur le côté gauche, mais cela se corrigera lui-même une fois la boucle complète complétée.
Autres conseils
C'est plus facile avec une minuterie:
Lable.Text = Lable1.Text.Substring(1) & Lable1.Text.Substring(0, 1)
Mettez ce minuteur de code et démarrez le minuteur au chargement du formulaire, voici comment vous pouvez l'utiliser