第二个版本

内容:在界面加上十个按钮,每隔一秒,随机让一个按钮变成蓝色,再过0.5秒,按钮恢复到灰色

想法:界面在原有的基础上添加9个button并且公用同一个事件

      难点:

  • 如何将前台的10button随机
  • 如何将按钮变蓝再变灰

后台代码:

private void Button_Click(object sender, EventArgs e) {
            DispatcherTimer showTimer = new DispatcherTimer();
            showTimer.Tick += new EventHandler(OnTimedEvent);
            showTimer.Interval = new TimeSpan(0, 0, 0, 2);
            showTimer.Start();
}

        public async void OnTimedEvent(object sender, EventArgs e) {
            //计时时执行的程序
            List<ButtonBase> btns = new List<ButtonBase>();
            btns.Add(btn1);
            btns.Add(btn2);
            btns.Add(btn3);
            btns.Add(btn4);
            btns.Add(btn5);
            btns.Add(btn6);
            btns.Add(btn7);
            btns.Add(btn8);
            btns.Add(btn9);
            btns.Add(btn10);
            Random b1 = new Random();
            int index = b1.Next(btns.Count);
            btns[index].Background = Brushes.LightBlue;
            await Task.Delay(2000);
            btns[index].Background = Brushes.LightGray;
}
  • 定时器是跟第一个版本一样的
  • 不同的是在“计时器执行的程序”的写法不同
  • 首先需要在前台的每个button需要x:name="xxx"取名称
  • 然后再在后台中通过集合的方式添加上每一个按钮。
  • 取到集合后再对这个集合进行随机取 主要点是int index=b1.Next(btns.Count);
  • 然后对这个随机按钮进行颜色赋值
  • 最关键一步如何让“肉眼”看到颜色的变化:添加异步等待 await Task.Delay(2000); 让它等待2s再执行下一步
posted @ 2021-11-16 17:18  庆喜  阅读(37)  评论(0编辑  收藏  举报