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!

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top