Есть ли какой-либо текстовый код прокрутки Visual Basic 2008?

StackOverflow https://stackoverflow.com/questions/1408639

  •  05-07-2019
  •  | 
  •  

Вопрос

Мне нужен код, который при применении к тексту в Visual Basic 2008 прокручивается по экрану.Мне не нужно ничего кричащего, просто для начала что-то простое.Если вы, ребята, знаете о такой вещи, это было бы здорово!

РЕДАКТИРОВАТЬ:

Я бы хотел, чтобы он ездил на велосипеде, надеюсь, так будет проще!

Это было полезно?

Решение

Что вам нужно:Одна метка, вы можете назвать ее как угодно, но в данном случае Label1 — это наша метка, а имя файла формы — Form1.vb, но, конечно, вы можете это изменить.

Что вам еще предстоит сделать:Отредактируйте текст ScrollLabel(15) в обоих случаях, чтобы добиться желаемой скорости.Время между итерациями указывается в миллисекундах.

Вероятно, есть лучший способ сделать это, но вот мой лучший вариант:

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

Обратите внимание, как IsClosed помогает разорвать цикл и гарантировать, что приложение не продолжит работу после его закрытия.

Кроме того, если пользователь изменил размер формы во время прокрутки, метка может подпрыгнуть при попадании в левую сторону, но это исправится само собой после завершения полного цикла.

Другие советы

С таймером проще:

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

Поместите этот таймер кода и запустите таймер при загрузке формы, вот как вы можете его использовать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top