Domanda

Voglio un codice che, quando applicato al testo in Visual Basic 2008, scorra attraverso lo schermo. Non voglio nulla di appariscente, solo qualcosa di essenziale con cui iniziare. Se conoscete una cosa del genere sarebbe fantastico!

EDIT:

Vorrei che ciclasse, spero che questo renda più facile!

È stato utile?

Soluzione

Cosa ti serve: una singola etichetta, puoi nominarla in qualsiasi modo, ma in questo caso Label1 è la nostra etichetta e il nome del file del modulo è Form1.vb, ma ovviamente puoi cambiarlo.

Cosa devi ancora fare: modifica il testo scrollLabel (15) in entrambi i casi per renderlo la velocità che desideri. Il tempo è in millisecondi, tra le iterazioni.

Probabilmente c'è un modo migliore per farlo, ma ecco il mio colpo migliore:

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

Nota come IsClosed aiuta a interrompere il ciclo per garantire che l'applicazione non continui una volta chiusa.

Inoltre, se l'utente ha ridimensionato il modulo mentre sta scorrendo, l'etichetta potrebbe saltare quando colpisce il lato sinistro, ma ciò si correggerà una volta completato un ciclo completo.

Altri suggerimenti

È più facile con un timer:

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

Metti questo timer di codice e avvia il timer al caricamento del modulo, ecco come puoi usarlo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top