【发布时间】:2021-10-20 05:31:55
【问题描述】:
抱歉,标题混淆了,但老实说,我不知道该放什么。 所以我创建了一个计时器,它将每隔 T 间隔触发一个事件。这个简单的事件只会附加文本并以 MMORPG 样式显示。它确实有效,但奇怪的是它有时不会触发事件(我解释得对吗?)。
这是图片,所以你可以理解我的意思:
这是我的代码:
baloon = new System.Timers.Timer(30);
baloon.Elapsed += OnTweakTimedEvent_baloon;
//baloon.Elapsed += new ElapsedEventHandler(OnTweakTimedEvent_baloon);
private void OnTweakTimedEvent_baloon(object sender, ElapsedEventArgs e)
{
lbBaloon.Text += message[letterCount];
letterCount++;
if (letterCount > message.Length - 1) //stops timer when finishes
{
letterCount = 0;
baloon.Enabled = false;
lbBaloon.Text = message; // displays the full message when it ends
}
}
【问题讨论】:
-
我想知道你为什么不简单地使用
lblBaloon.Text = message.Substring(0, letterCount++); -
@Llama 啊谢谢你的好主意哈哈,它确实解决了丢失字母的问题,但动画不是很流畅,比如当计时器发生奇怪的事情时,动画非常滞后。如果您做出回答,我会接受您的评论作为答案,但我仍然想知道这种奇怪行为背后的原因是什么。
-
计时器并不是很好地用于在 winforms 中为任何东西设置动画,基本上你处于计时器精度的极限,令人惊讶的是它甚至可以正常工作。
-
动画不是很流畅 - 欢迎来到winforms :-(