Esiste un codice di testo scorrevole di Visual Basic 2008?
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!
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