我只是刚刚进入图形用户界面,所以如果我错过了一些明显的东西,请原谅我。谷歌没有多大帮助我害怕。
我的基本目标是让Marquee样式文本在屏幕上滚动一定次数。我已经使用计时器实现了滚动方面,该计时器在屏幕上滚动一个名为“我的文字在这里”的标签(摘自本教程:http://www.youtube.com/watch?v=-y-Z0i-DeAs注意:我不会说他所说的语言),但我'我无法阻止这件事。我愿意使用不同的方式来实现滚动,但这是我迄今为止发现的唯一一个与我目前的GUI知识水平(基本上是拖放)相关的例子。
private void timer_Tick(object sender, EventArgs e)
{
this.Refresh();
labelTesting.Left += 5;
if (labelTesting.Left >= this.Width)
{
labelTesting.Left = labelTesting.Width * -1;
}
}
我最好的猜测是计时器只是在每次打勾时开始整个过程。我已经尝试通过在运行i次并告诉标签显示什么后返回它来反击这个,但是这不起作用。我似乎也无法找到告诉事情要停止的方法。
http://www.dotnetperls.com/timer有一个示例,其中计时器设置为运行一段给定的时间,但我不知道如何在使用GUI时实现它。实现我想要的功能的最佳方法是什么?任何见解或建议将不胜感激。
编辑:根据答案和评论中的建议,我已经编辑了代码,以便在将自己设置为给定位置之前运行30秒。但是文本不再滚动。我将继续努力,但更多的意见将得到赞赏。
private void timer_Tick(object sender, EventArgs e)
{
var time = DateTime.Now;
if(time < DateTime.Now.AddSeconds(-30)) // you decide when to stop scrolling
{
Timer timer = (Timer)sender;
timer.Stop();
labelTesting.Left = 0; // or wherever it should be at the end of the scrolling
}
this.Refresh();
labelTesting.Left += 5;
if (labelTesting.Left >= this.Width)
{
labelTesting.Left = labelTesting.Width * -1;
}
}
答案 0 :(得分:0)
您需要停止计时器:
private void timer_Tick(object sender, EventArgs e)
{
if (someConditionToEndScroll) // you decide when to stop scrolling
{
Timer timer = (Timer) sender;
timer.Stop();
labelTesting.Left = 0; // or wherever it should be at the end of the scrolling
}
this.Refresh();
labelTesting.Left += 5;
if (labelTesting.Left >= this.Width)
{
labelTesting.Left = labelTesting.Width * -1;
}
}