¿Hay algún código de texto de desplazamiento de Visual Basic 2008?
Pregunta
Quiero un código que, cuando se aplica al texto en Visual Basic 2008, se desplaza por la pantalla. No quiero nada llamativo, solo algo básico para comenzar. Si ustedes saben de algo así, ¡sería genial!
EDITAR:
Me gustaría que fuera un ciclo, ¡espero que esto lo haga más fácil!
Solución
Lo que necesita: una sola etiqueta, puede ponerle el nombre que quiera, pero en este caso Label1 es nuestra etiqueta, y el nombre del archivo de formulario es Form1.vb, pero por supuesto, puede cambiar esto.
Lo que todavía tiene que hacer: Edite el texto scrollLabel (15) en ambos casos para que sea la velocidad que desea. El tiempo es en milisegundos, entre iteraciones.
Probablemente hay una mejor manera de hacer esto, pero esta es mi mejor oportunidad:
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
Observe cómo IsClosed ayuda a romper el bucle para asegurarse de que la aplicación no continúe una vez que se cierre.
Además, si el usuario ha cambiado el tamaño del formulario mientras se está desplazando puede hacer que la etiqueta salte cuando llegue al lado izquierdo, pero eso se corregirá una vez que haya completado un ciclo completo.
Otros consejos
Es más fácil con un temporizador:
Lable.Text = Lable1.Text.Substring(1) & Lable1.Text.Substring(0, 1)
Coloque este temporizador de código e inicie el temporizador en la carga de formularios, así podrá utilizarlo