如何获取一个长字符串并在15个字符的文本控件/标签中滚动

本文关键字:字符 文本 15个 控件 滚动 标签 串并 何获取 获取 一个 字符串 | 更新日期: 2023-09-27 18:23:53

我正在尝试将歌曲的歌词放入标签中滚动,但我希望标签一次只显示15个字符。这就像是一个稳定的滚动到歌曲的结尾。我该怎么做?我到处找了,但似乎找不到任何关于这个的东西。

如何获取一个长字符串并在15个字符的文本控件/标签中滚动

构造一个循环,设置标签的.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线程,因为它几乎总是处于睡眠状态。

你可能想用一个计时器来代替睡眠延迟,它会在每一次滴答声中更新标签。

以下是在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

让表单使用一个秒表,它每n毫秒调用一次更新方法。在更新方法中,将标签中的文本更改k个字符。改变k和n以匹配歌曲的时间。