从最后一次单击c#WPF更改按钮颜色一小段时间

时间:2014-12-14 11:44:30

标签: c# wpf button click background-color

我使用此链接来解决我的问题,但取得了部分成功 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秒,并且每次点击按钮时计时器都不会重置。
谢谢你的帮助。

1 个答案:

答案 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);
            });
        }
    }