0 votes

Existe-t-il un code de défilement de texte en Visual Basic 2008 ?

Je veux un code qui, lorsqu'il est appliqué à un texte dans Visual Basic 2008, fait défiler l'écran. Je ne veux rien de tape à l'oeil, juste quelque chose de basique pour commencer. Si vous avez connaissance d'une telle chose, ce serait génial !

EDIT :

J'aimerais qu'il y ait un cycle, j'espère que cela facilitera les choses !

1voto

Arif Points 11

C'est plus facile avec une minuterie :

Lable.Text = Lable1.Text.Substring(1) & Lable1.Text.Substring(0, 1)

Mettez ce code timer et démarrez le timer au chargement du formulaire, c'est ainsi que vous pouvez l'utiliser.

0voto

Cyclone Points 6493

Ce dont vous avez besoin : Une seule étiquette, vous pouvez lui donner n'importe quel nom mais dans ce cas Label1 est notre étiquette, et le nom du fichier du formulaire est Form1.vb mais bien sûr vous pouvez le changer.

Ce qu'il vous reste à faire : Modifier le texte scrollLabel(15) dans les deux cas pour lui donner la vitesse souhaitée. Le temps est en millisecondes, entre les itérations.

Il y a probablement une meilleure façon de procéder, mais voici mon meilleur essai :

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

Remarquez que IsClosed aide à interrompre la boucle pour s'assurer que l'application ne continue pas une fois qu'elle est fermée.

En outre, si l'utilisateur a redimensionné le formulaire pendant le défilement, il se peut que l'étiquette saute lorsqu'elle touche le côté gauche, mais cela se corrigera une fois qu'elle aura effectué une boucle complète.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X