2009-09-11 1 views
0

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

EDIT:

Я хотел бы, чтобы это цикл, надеюсь, что это делает его более легким!

+0

ли вы хотите, чтобы повторно прокручивать или просто перебирать один раз? – Cyclone

+0

Чтобы сделать это менее вопросом «gimme teh»: что вы не можете сделать? Манипулирование текстом или настройка таймера? –

+0

Это очень просто, мне просто нужно знать, хотите ли вы, чтобы он переходил в цикл более одного раза или нет. – Cyclone

ответ

0

Что вам нужно: одну метку, вы можете назвать ее чем угодно, но в этом случае 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 помогает разорвать петлю, чтобы заявка не продолжать, когда он будет закрыт.

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

+0

Код выглядит многообещающим, но, однако, он придумал несколько ошибок, таких как событие «Закрыто». Тем не менее, работая над этим, я дам вам знать, если я сделаю какой-то прогресс. –

+0

Это сработало для меня, какие ошибки вы получили? – Cyclone

+0

Я думаю, что активный цикл ожидания просто глупо в форме. Почему бы не использовать «Таймер» вместо этого? –

1

Его более проще с таймером:

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^