我正在尝试制作一个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。
也许我会以错误的方式解决这个问题并导致这个问题?有什么建议吗?
答案 0 :(得分:2)
您正在为每个计时器滴答添加另一个事件处理程序!
移动此代码:
sbOut.Completed += new EventHandler(sbOut_Completed);
进入初始化 - 只执行一次。