Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在一定时间内更改按钮的颜色和文本_C#_.net_Wpf_Xaml - Fatal编程技术网

C# 在一定时间内更改按钮的颜色和文本

C# 在一定时间内更改按钮的颜色和文本,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我必须在单击事件发生时更改按钮的文本和颜色,但只需几秒钟,然后文本和颜色的旧值就会出现 这怎么行?可能使用异步任务,该任务会在时间过后重置值 问题是我认识到颜色和文本只有在click事件方法完成后才会更新 我目前正在做大量关于async和Wait的研究,目前对它有点上瘾。所以我无法阻止自己回答这个问题 查看下面的小样本: <Grid > <Button x:Name="Button1" Content="Click Me" Width="88" Height="44"

我必须在单击事件发生时更改按钮的文本和颜色,但只需几秒钟,然后文本和颜色的旧值就会出现

这怎么行?可能使用异步任务,该任务会在时间过后重置值


问题是我认识到颜色和文本只有在click事件方法完成后才会更新

我目前正在做大量关于async和Wait的研究,目前对它有点上瘾。所以我无法阻止自己回答这个问题

查看下面的小样本:

<Grid >
    <Button x:Name="Button1" Content="Click Me" Width="88" Height="44" Click="Button1_Click"/>
</Grid>
private async void Button1_Click(object sender, RoutedEventArgs e)
{
    Button1.Background = Brushes.Red;
    Button1.Content = "Clicked State";
    await Task.Delay(8000);
    Button1.Background = Brushes.Transparent;
    Button1.Content = "Click Me";
}
XAML代码:

<Grid >
    <Button x:Name="Button1" Content="Click Me" Width="88" Height="44" Click="Button1_Click"/>
</Grid>
private async void Button1_Click(object sender, RoutedEventArgs e)
{
    Button1.Background = Brushes.Red;
    Button1.Content = "Clicked State";
    await Task.Delay(8000);
    Button1.Background = Brushes.Transparent;
    Button1.Content = "Click Me";
}
现在让我解释一下这里发生了什么:

  • 单击按钮时,它将进入异步按钮单击事件处理程序Button1\u Click

  • 按钮颜色更改为红色,内容更改为“单击状态”

  • 现在我们可以调用wait Task.Delay(8000),即函数的执行现在正在等待任务完成,而任务被延迟了 8秒。执行返回到主UI线程,您的UI将被激活 仍然反应灵敏

  • 完成8秒后,线程池中的空闲线程将在等待后再次开始执行方法的其余部分

  • 按钮更改为默认背景色,内容更改为默认内容“单击我”


  • 希望这有帮助。

    查找故事板这正是我要找的!谢谢