模拟代码中的一系列按钮点击,等待效果完成

本文关键字:等待 代码 一系列 按钮 模拟 | 更新日期: 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">