首页 > 解决方案 > 使用具有更改间隔的表单计时器

问题描述

WindowsForm C#中的交通灯模拟

我的问题是如何为红灯和绿灯设置计时器 30 秒,为黄灯设置 5 秒?

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            redLight.Visible = true;
            yellowLight.Visible = false;
            greenLight.Visible = false;
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }

        private void greenLight_Click(object sender, EventArgs e)
        {

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (redLight.Visible == true)
            {
                redLight.Visible = false;
                yellowLight.Visible = true;
                greenLight.Visible = false;
            }
            else if (yellowLight.Visible == true)
            {
                redLight.Visible = false;
                yellowLight.Visible = false;
                greenLight.Visible = true;
            }
            else if(greenLight.Visible == true)
            {
                redLight.Visible = true;
                yellowLight.Visible = false;
                greenLight.Visible = false;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
        }
    }

标签: c#winforms

解决方案


您可以像下面的代码一样使用计时器类。黄色没有逻辑,因为我不知道黄色和红色之间需要多少时间,这将是您解决的一个很好的例子。

public partial class Form1 : Form
    {
        static System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();
        public Form1()
        {
            InitializeComponent();
            redLight.Visible = true;
            yellowLight.Visible = false;
            greenLight.Visible = false;
            myTimer.Tick += new EventHandler(timer1_Tick);
            myTimer.Interval = 30000;
            myTimer.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (redLight.Visible == true)
            {
                myTimer.Interval = 5000;
                redLight.Visible = false;
                yellowLight.Visible = true;
                greenLight.Visible = false;
            }
            else if (yellowLight.Visible == true)
            {
                redLight.Visible = false;
                yellowLight.Visible = false;
                greenLight.Visible = true;
            }
            else if(greenLight.Visible == true)
            {
                myTimer.Interval = 30000;
                redLight.Visible = true;
                yellowLight.Visible = false;
                greenLight.Visible = false;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
        }
    }

推荐阅读