模拟一系列按钮单击代码并等待效果完成

时间:2012-03-29 04:46:56

标签: c# wpf

我有一系列带有EFFECTS的按钮,我想模拟点击代码。问题是,当我运行“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>

2 个答案:

答案 0 :(得分:0)

试着看看Laurent Bugnion的这个article

从以上文章:

  

请注意,也可以使用的BeginTime属性   动画对象延迟动画,例如为了   级联动画。另一种方法是使用Completed事件   可以在XAML代码中设置,也可以在代码隐藏中设置。这个事件意味着   因此,相应的方法必须存在于代码隐藏中   它不适用于纯XAML应用程序。

答案 1 :(得分:0)

Thread.sleep将无法正常工作,因为它定义了sys.val实现,因此您可以使用以下代码:

出现错误:<EventTrigger RoutedEvent="Button.Click">

应该是:<Event.Trigger.Sleep RoutedEvent="Button.Click">