Как взять длинную строку и прокрутить ее в 15-символьном текстовом элементе управления / метке? - PullRequest
2 голосов
/ 10 февраля 2012

Я пытаюсь взять текст песни и прокрутить ее на ярлыке, но я хочу, чтобы ярлык отображал только 15 символов одновременно. Это было бы похоже на непрерывную прокрутку до конца песни. Как бы я поступил так? Я искал повсюду, но, похоже, ничего не могу найти по этому поводу.

Ответы [ 3 ]

3 голосов
/ 10 февраля 2012

Создайте цикл, который устанавливает свойство .Text метки. Каждая итерация цикла должна увеличиваться на любое количество символов, которое вы хотите прокрутить за одну итерацию.

string Lyrics = "This song is just six words long";
int CurrentPosition = 0;
const int CharactersToShow = 15;
for (int i = 0; i < Lyrics.Length; i++)
{
    lblOutput.Text = CharactersToShow + CurrentPosition > Lyrics.Length
                ? Lyrics.Substring(CurrentPosition)
                : Lyrics.Substring(CurrentPosition, CharactersToShow);
    CurrentPosition++;
    lblOutput.Update();
    Thread.Sleep(250);
}

Некоторые примечания: это всего лишь пример. Как написано, он монополизирует поток GUI, потому что он почти всегда находится в спящем режиме.

Вместо задержки сна вы, вероятно, захотите использовать таймер, который обновляет метку каждый тик.

1 голос
/ 10 февраля 2012

Пусть форма использует секундомер, который вызывает метод обновления каждые n миллисекунд. В методе обновления измените текст в метке на k символов. Варьируйте k и n, чтобы соответствовать времени песни.

1 голос
/ 10 февраля 2012

Вот учебник по созданию эффекта прокрутки текста в WinForms: http://www.dotnettutorials.com/tutorials/windowsprogramming/text-scroll-effect-cs.aspx

Кроме того, в CodeProject есть элемент управления WinForms: http://www.codeproject.com/Articles/24587/Easy-to-Use-Marquee-Control-for-Windows-Form-with

...