事件越来越多,一再被解雇

时间:2012-08-31 03:07:01

标签: c# event-handling storyboard

我正在尝试制作一个RSS演示者。这意味着在播放“Out”动画后转到下一个项目,然后播放“In”动画。 http://oeis.org/A000217

        void _timer_Tick(object sender, EventArgs e)
    {
        Storyboard sbOut = this.FindResource("sbAnimateOut") as Storyboard;
        sbOut.Completed += new EventHandler(sbOut_Completed);
        sbOut.Begin();

    }

    void sbOut_Completed(object sender, EventArgs e)
    {
        if (_selected < _total)
        {
            _selected++;


        }
        else
        {
            GetFeed(_feed);
            _selected = 0;

        }
        lstbxItems.SelectedIndex = _selected;
        counter.Text = _selected.ToString();

        Storyboard sbIn = this.FindResource("sbAnimateIn") as Storyboard;
        sbIn.Begin();
    }

我注意到它似乎跳过了项目。当我逐行逐步执行时,似乎第一次执行void sbOut_Completed(object sender, EventArgs e),第二次执行三次,第三次执行六次 - 依此类推sequentially

也许我会以错误的方式解决这个问题并导致这个问题?有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您正在为每个计时器滴答添加另一个事件处理程序!

移动此代码:

sbOut.Completed += new EventHandler(sbOut_Completed);

进入初始化 - 只执行一次。