timer的应用一:制作简单的进度灯

那天坐广州地铁,看到地铁显示的到站进度灯,想做个相似的效果出来,做的有点低级,是在winform下建立8个label。利用timer、控制跳转到另一个label的时间,先查找所有label,把label赋给一个label对象数组,然后在点击事件里面启用timer用委托完成label色彩轮转、

public Form1()
        {
            InitializeComponent();
        }
        Label[] dic = new Label[8];
        int i = 0;//遍历
        int j = 0;//存有颜色的位置
        private void Form1_Load(object sender, EventArgs e)
        {
            foreach (Control c in this.Controls)//找出label赋值给数组,并把当前进度位置赋值给全局变量
            {
                Label lb = c as Label;
                if (lb != null)
                {
                    if (lb.BackColor == Color.Red)
                    {
                        j = i;
                    }
                    dic[i] = lb;
                    i++;
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {

            System.Timers.Timer atime = new System.Timers.Timer();//实例化一个timer
            atime.Interval = 100;//设置执行时间
            atime.Elapsed += new System.Timers.ElapsedEventHandler(timing);//将timeing事件绑定到timer执行委托链
            atime.AutoReset = true;//一直执行
            atime.Enabled = true;//是否执行事件
            dic[0].BackColor = Color.Red;

        }

        public void timing(object sender, System.Timers.ElapsedEventArgs e)
        {
            for (int i = 0; i < dic.Length; i++)//找出当前进度位置
            {
                if (dic[i].BackColor == Color.Red)
                {

                    j = i;
                }
            }

            if (j >= 0)
            {
                dic[j].BackColor = Color.Gray;
                if (j == dic.Length - 1)//完成所有进度遍历就重新开始
                    j = -1;
                dic[j + 1].BackColor = Color.Red;
            }
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值