我使用此链接来解决我的问题,但取得了部分成功 Change button color for a short time
我需要出示一个红色按钮 只要单击该按钮,它就会将其颜色更改为绿色,持续5秒钟, 应支持连续点击,但不应累积,即按钮颜色应在最后一次点击后返回红色5秒。
我的代码:
private void myButton_Click(object sender, RoutedEventArgs e)
{
Timer timer = new Timer { Interval = 5000 };
timer.Elapsed += HandleTimerTick;
myButton.Background = new SolidColorBrush(Colors.LightGreen);
timer.Start();
}
private void HandleTimerTick(object sender, EventArgs e)
{
Timer timer = (Timer)sender;
timer.Stop();
myButton.Dispatcher.BeginInvoke((Action)delegate()
{
myButton.Background = new SolidColorBrush(Colors.Red);
});
}
它可以工作,但距离我第一次点击只有5秒,并且每次点击按钮时计时器都不会重置。
谢谢你的帮助。
答案 0 :(得分:1)
您必须将计时器移出事件,并在每次用户点击时重新启动它。这些方面的东西:
public partial class MainWindow : Window
{
private Timer timer;
public MainWindow()
{
InitializeComponent();
timer = new Timer{Interval = 5000};
}
private void Button_Click(object sender, RoutedEventArgs e)
{
timer.Elapsed += HandleTimerTick;
myButton.Background = new SolidColorBrush(Colors.LightGreen);
timer.Stop();
timer.Start();
}
private void HandleTimerTick(object sender, EventArgs e)
{
Timer timer = (Timer)sender;
timer.Stop();
myButton.Dispatcher.BeginInvoke((Action)delegate()
{
myButton.Background = new SolidColorBrush(Colors.Red);
});
}
}