2016-06-19 5 views
0

Мне нужно создать приложение для цифровых вывесок, которое будет отображать объявления. У вас есть текст, который может быть спроектирован пользователем, я думал о расширенном текстовом поле, и текст будет автоматически прокручиваться по вертикали (например, текстовое поле «новости»). Любые идеи?RichTextBox вертикальный автоматический прокручиваемый текст

+0

код до сих пор? вы можете периодически отправлять сообщения WM_SCROLL в текстовое поле rich. что должно произойти, когда прокрутка попадает в нижнюю часть? лучший контроль может быть возможен с HTML-страницей (которая могла бы обрабатывать прокрутку изнутри, JavaScript) и отображаться в вашей программе VB.NET с помощью элемента управления WebBrowser. – dlatikay

ответ

0

Хорошо, я сейчас пишу это для вас, пока я жду своего поезда. Поэтому я не тестировал это, но что-то подобное должно сделать трюк.

ПРИМЕЧАНИЕ
Если вы получаете ошибку CheckForIllegalCrossThreadCalls,
Не устанавливайте его CheckForIllegalCrossThreadCalls = False для целей отладки, за исключением.
Хотя вы ничего не заметите в начале, CheckForIllegalCrossThreadCalls = False может и может вызвать проблемы позже на дорожке.

Со всем этим сказано: Вот код.

Public Class Form1 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    TextBox1.SelectionStart = 0 ''Change to a RichTextBox if you want. 
    ''Starting the background worker. 
    BackgroundWorker1.RunWorkerAsync() 
End Sub 

Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork 
    ''BACKGROUND WORKER'' 
    For i = 0 To TextBox1.Text.Length 
     TextBox1.SelectionStart = i 
     System.Threading.Thread.Sleep(200)''changing the sleep time will make the textbox scroll to the right faster or slower. 
    Next 

End Sub 

Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted 
    ''Once completed, The background worker will start again. 
    TextBox1.SelectionStart = 0 
    BackgroundWorker1.RunWorkerAsync() 
End Sub 

Private Sub Form1_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing 
    ''This should stop the program from crashing when closing if the background worker is still running 
    BackgroundWorker1.CancelAsync() 
End Sub 
End Class 

ПРИМЕЧАНИЕ
Вам нужно будет использовать фоновый рабочий или иначе ваша программа станет отвечать на запросы, пока Loop не будет завершена.
Еще раз, если вы получили ошибку CheckForIllegalCrossThreadCalls, посмотрите на Google и найдите, чтобы обойти эту проблему. Однако, если вы с удовольствием оставите ее как CheckForIllegalCrossThreadCalls = False, это зависит от вас.

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

+0

Привет, я попробую это и дам вам знать как можно скорее. Благодаря! – Kasper555

+0

никаких проблем. Если вам случится получить эту ошибку, о которой я говорил, но с удовольствием проживаю с ней до тех пор, пока вы не скроете весь свой код, вот исправление 'CheckForIllegalCrossThreadCalls = False' добавьте его в формульный блок – Werdna

+0

Почему вы просто делаете это потокобезопасным с самого начала? :) –

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