第二个版本

内容:在界面加上十个按钮,每隔一秒,随机让一个按钮变成蓝色,再过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 @   庆喜  阅读(42)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示