怎么才能触发 storyboard.Complete 事件?

davidtsui 2012-08-08 04:19:21
界面上有个按钮 button1 和内容标签 label1。我想在点击 button1 以后,让 label1 消失。动画执行完毕后,再执行别的东西。代码如下:



private void button1_Click(object sender, RoutedEventArgs e)
{
Storyboard story = new Storyboard();
DoubleAnimation d = new DoubleAnimation(1, 0, TimeSpan.FromMilliseconds(1000));
story.Children.Add(d);

this.RegisterName("label1", label1);

Storyboard.SetTargetProperty(d, new PropertyPath(FrameworkElement.OpacityProperty));
Storyboard.SetTargetName(d, "label1");
story.Begin(this, true);

story.Completed += new EventHandler(d_Completed);
}

void d_Completed(object sender, EventArgs e)
{
MessageBox.Show("事情做完了!");
}



这段代码,动画可以正常运行,但就是进不去 d_Complete 事件里,请问为什么呢?
...全文
511 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
davidtsui 2012-08-08
  • 打赏
  • 举报
回复
好吧朋友们。。。当我没问过。。。
Architecture Net 2012-08-08
  • 打赏
  • 举报
回复
你先注册Completed事件,然后在story.Begin()
cs_esharp 2012-08-08
  • 打赏
  • 举报
回复
把代码顺序调整 一下:
Storyboard story = new Storyboard();
story.Completed += new EventHandler(d_Completed);
DoubleAnimation d = new DoubleAnimation(1, 0, TimeSpan.FromMilliseconds(1000));
story.Children.Add(d);

this.RegisterName("label1", label1);

Storyboard.SetTargetProperty(d, new PropertyPath(FrameworkElement.OpacityProperty));
Storyboard.SetTargetName(d, "label1");
story.Begin(this, true);



原因很简单,你动画都开始执行了,执行都完了,才订阅动画完成事件,有用吗

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧