WPF 如何实现先执行完动画再关闭窗口
发布网友
发布时间:2022-05-01 14:20
我来回答
共3个回答
热心网友
时间:2023-10-18 01:51
时间不够,因为你一点关闭,动画刚要执行,THISE.CLOSE()也执行了。
教一个比较笨的方法,再CLOSE事件里面不写THIS.CLOSE(),先写e.Cancle=true;再定义一个时钟,时钟的INTERVAL=动画要执行的时间。然后close事件里面开启时钟。而时钟事件里面写上THIS.CLOSE();跟timer1.enable=flase;
那么执行CLOSEWINDOW_CLICK的时候,就会间隔INTERVAL的时间,这时间让你执行动画,然后执行THIS.CLOSE();关闭窗口。
比较简单的方法吧?^_^追问非常感谢!
这个方法想到过,不过很少用时钟,写代码的话要再学习下时钟,:(
其实我有把动画写在.cs里面实现执行完动画再关闭窗口:
Storyboard sb = new Storyboard(); //定义个故事板
.........//定义动画内容和效果
sb.Completed += (a, b) => { this.Close(); }; //把this.Close(); 写到Completed后边,但是我不知道这句话怎么写到AXML里面,如果能写到AXML里面,就完美了。
sb.Begin();
有答案我再追加分^^
热心网友
时间:2023-10-18 01:51
反转动画可用rotate
<Window.RenderTransform>
<RotateTransform x:Name="rotate"></RotateTransform>
</Window.RenderTransform>
后台动画完成后执行关闭,可用Completed事件
private void CloseWindow_Click(object sender, RoutedEventArgs e)
{
DoubleAnimation rotation = new DoubleAnimation(-360, TimeSpan.FromSeconds(0.2));
rotation.Completed += new EventHandler(rotation_Completed);
rotation.AutoReverse = false;
rotation.FillBehavior = FillBehavior.HoldEnd;
window.rotate.BeginAnimation(RotateTransform.AngleProperty, rotation);
}
void rotation_Completed(object sender, EventArgs e)
{
this.Close();
}
不知道这是你需要的不
热心网友
时间:2023-10-18 01:52
一句话:用异步解决。
热心网友
时间:2023-10-18 01:51
时间不够,因为你一点关闭,动画刚要执行,THISE.CLOSE()也执行了。
教一个比较笨的方法,再CLOSE事件里面不写THIS.CLOSE(),先写e.Cancle=true;再定义一个时钟,时钟的INTERVAL=动画要执行的时间。然后close事件里面开启时钟。而时钟事件里面写上THIS.CLOSE();跟timer1.enable=flase;
那么执行CLOSEWINDOW_CLICK的时候,就会间隔INTERVAL的时间,这时间让你执行动画,然后执行THIS.CLOSE();关闭窗口。
比较简单的方法吧?^_^追问非常感谢!
这个方法想到过,不过很少用时钟,写代码的话要再学习下时钟,:(
其实我有把动画写在.cs里面实现执行完动画再关闭窗口:
Storyboard sb = new Storyboard(); //定义个故事板
.........//定义动画内容和效果
sb.Completed += (a, b) => { this.Close(); }; //把this.Close(); 写到Completed后边,但是我不知道这句话怎么写到AXML里面,如果能写到AXML里面,就完美了。
sb.Begin();
有答案我再追加分^^
热心网友
时间:2023-10-18 01:51
反转动画可用rotate
<Window.RenderTransform>
<RotateTransform x:Name="rotate"></RotateTransform>
</Window.RenderTransform>
后台动画完成后执行关闭,可用Completed事件
private void CloseWindow_Click(object sender, RoutedEventArgs e)
{
DoubleAnimation rotation = new DoubleAnimation(-360, TimeSpan.FromSeconds(0.2));
rotation.Completed += new EventHandler(rotation_Completed);
rotation.AutoReverse = false;
rotation.FillBehavior = FillBehavior.HoldEnd;
window.rotate.BeginAnimation(RotateTransform.AngleProperty, rotation);
}
void rotation_Completed(object sender, EventArgs e)
{
this.Close();
}
不知道这是你需要的不
热心网友
时间:2023-10-18 01:51
时间不够,因为你一点关闭,动画刚要执行,THISE.CLOSE()也执行了。
教一个比较笨的方法,再CLOSE事件里面不写THIS.CLOSE(),先写e.Cancle=true;再定义一个时钟,时钟的INTERVAL=动画要执行的时间。然后close事件里面开启时钟。而时钟事件里面写上THIS.CLOSE();跟timer1.enable=flase;
那么执行CLOSEWINDOW_CLICK的时候,就会间隔INTERVAL的时间,这时间让你执行动画,然后执行THIS.CLOSE();关闭窗口。
比较简单的方法吧?^_^追问非常感谢!
这个方法想到过,不过很少用时钟,写代码的话要再学习下时钟,:(
其实我有把动画写在.cs里面实现执行完动画再关闭窗口:
Storyboard sb = new Storyboard(); //定义个故事板
.........//定义动画内容和效果
sb.Completed += (a, b) => { this.Close(); }; //把this.Close(); 写到Completed后边,但是我不知道这句话怎么写到AXML里面,如果能写到AXML里面,就完美了。
sb.Begin();
有答案我再追加分^^
热心网友
时间:2023-10-18 01:51
反转动画可用rotate
<Window.RenderTransform>
<RotateTransform x:Name="rotate"></RotateTransform>
</Window.RenderTransform>
后台动画完成后执行关闭,可用Completed事件
private void CloseWindow_Click(object sender, RoutedEventArgs e)
{
DoubleAnimation rotation = new DoubleAnimation(-360, TimeSpan.FromSeconds(0.2));
rotation.Completed += new EventHandler(rotation_Completed);
rotation.AutoReverse = false;
rotation.FillBehavior = FillBehavior.HoldEnd;
window.rotate.BeginAnimation(RotateTransform.AngleProperty, rotation);
}
void rotation_Completed(object sender, EventArgs e)
{
this.Close();
}
不知道这是你需要的不
热心网友
时间:2023-10-18 01:52
一句话:用异步解决。
热心网友
时间:2023-10-18 01:52
一句话:用异步解决。
热心网友
时间:2023-10-18 01:51
时间不够,因为你一点关闭,动画刚要执行,THISE.CLOSE()也执行了。
教一个比较笨的方法,再CLOSE事件里面不写THIS.CLOSE(),先写e.Cancle=true;再定义一个时钟,时钟的INTERVAL=动画要执行的时间。然后close事件里面开启时钟。而时钟事件里面写上THIS.CLOSE();跟timer1.enable=flase;
那么执行CLOSEWINDOW_CLICK的时候,就会间隔INTERVAL的时间,这时间让你执行动画,然后执行THIS.CLOSE();关闭窗口。
比较简单的方法吧?^_^追问非常感谢!
这个方法想到过,不过很少用时钟,写代码的话要再学习下时钟,:(
其实我有把动画写在.cs里面实现执行完动画再关闭窗口:
Storyboard sb = new Storyboard(); //定义个故事板
.........//定义动画内容和效果
sb.Completed += (a, b) => { this.Close(); }; //把this.Close(); 写到Completed后边,但是我不知道这句话怎么写到AXML里面,如果能写到AXML里面,就完美了。
sb.Begin();
有答案我再追加分^^
热心网友
时间:2023-10-18 01:51
反转动画可用rotate
<Window.RenderTransform>
<RotateTransform x:Name="rotate"></RotateTransform>
</Window.RenderTransform>
后台动画完成后执行关闭,可用Completed事件
private void CloseWindow_Click(object sender, RoutedEventArgs e)
{
DoubleAnimation rotation = new DoubleAnimation(-360, TimeSpan.FromSeconds(0.2));
rotation.Completed += new EventHandler(rotation_Completed);
rotation.AutoReverse = false;
rotation.FillBehavior = FillBehavior.HoldEnd;
window.rotate.BeginAnimation(RotateTransform.AngleProperty, rotation);
}
void rotation_Completed(object sender, EventArgs e)
{
this.Close();
}
不知道这是你需要的不
热心网友
时间:2023-10-18 01:52
一句话:用异步解决。