使文本滚动给定的次数

时间:2013-03-05 22:53:13

标签: c# visual-studio-2010 user-interface timer horizontal-scrolling

我只是刚刚进入图形用户界面,所以如果我错过了一些明显的东西,请原谅我。谷歌没有多大帮助我害怕。

我的基本目标是让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;
        }
    }

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;
        }           
}