模拟代码中的一系列按钮点击,等待效果完成
本文关键字:等待 代码 一系列 按钮 模拟 | 更新日期: 2023-09-27 18:29:25
我有一系列带有效果的按钮,我想在代码中模拟点击。问题是,当我运行"someFunction"时,所有效果都会同时触发。我想点击一个按钮,然后等待效果完成,然后继续其他按钮。我试过使用Thread.sleep,但不起作用。有人能给我一些如何做到这一点的建议吗?此外,是否可以模拟同时点击多个按钮?
谢谢你的帮助!
someFunction() {
button1.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
//System.Threading.Thread.Sleep(100); doesn't work wait for effect to finish
button2.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
//System.Threading.Thread.Sleep(100); doesn't work
button3.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
//System.Threading.Thread.Sleep(100); doesn't work
button4.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
}
<Button Name="buttonRed" Background="Red" BorderBrush="Black" BorderThickness="1"
Grid.Row="1" Grid.Column="0" Click="buttonRedClick">
<Button.BitmapEffect>
<BlurBitmapEffect x:Name="redBlur" Radius="0" />
</Button.BitmapEffect>
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="redBlur"
Storyboard.TargetProperty="Radius"
From="0" To="40" Duration="0:0:0.3"
AutoReverse="True" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
试试Laurent Bugnion的这篇文章。
来自以上文章:
请注意,也可以使用动画对象以延迟动画,例如为了级联动画。另一种方法是使用Completed事件可以在XAML代码中设置,也可以在代码隐藏中设置。此事件意味着相应的方法必须存在于代码后面,因此它不适用于纯XAML应用程序。
Thread.sleep将不起作用,因为它定义了sys.val实现,所以您可以使用以下代码:
出现错误:<EventTrigger RoutedEvent="Button.Click">
相反,它应该是:<Event.Trigger.Sleep RoutedEvent="Button.Click">