第二个版本
内容:在界面加上十个按钮,每隔一秒,随机让一个按钮变成蓝色,再过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再执行下一步