一起学C#上位机(三.设计倒计时器)

一.用到的控件
1.按钮:button
2.滚动条:progressbar
3.下拉列表:combobox
4.文字标签:label
5.定时器:timer
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二.界面布局
新建一个空白工程,找到上面的控件之后,根据自己的需求布局界面即可,

如图:
控件的名称在属性里的Text属性中可以改,上篇已经介绍了。
在这里插入图片描述
在这里插入图片描述
将下拉框的dropdownstyle更改成dropdownlist,下拉框中的文字就不用改了,里面的元素可以在属性里面一个一个的加,也可以程序里面加。个人觉得一个一个加太累了,在程序里设置就行了。

三.构建代码
双击form窗体,进入到代码,From_load()这个函数是窗体创建之后运行的函数,下拉框的元素添加在这里,用个For循环。为什么添加在这里呢,再解释一遍,这个函数是窗体也就是界面创建的时候运行的函数,我们让界面运行的时候就创建下拉框的元素。
在这里插入图片描述
用for循环给下拉框类的对象combobox添加元素

        private void Form1_Load(object sender, EventArgs e)
        {
    
    
            int i;
            for (i = 1; i < 100; i++)
            {
    
    
                comboBox1.Items.Add(i.ToString());//将i转化成字符添加到下拉框
            }

        }

Items是专门添加元素的对象,下属的方法Add(),因为这时候i还是数字,,他也是个类,现在要给他转换成字符,用Tostring()方法。
在这里插入图片描述

编辑好了之后点一下运行看看
在这里插入图片描述
看到没有,下拉框的元素都有了。
设置定时器
时间为1000mS.
在这里插入图片描述
设置定时器的开始和停止,定时器一开始是关闭的,点击开始计时按钮的时候定时器开始计时。

在这里插入图片描述

定时器事件:
在这里插入图片描述
定时器中断,之前设置了1000mS中断一次,相当于是,1S之后if循环一次,定时器事件运行一次。

在这里插入图片描述
将下拉框中的文字转化成数字。

4.完整程序

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace test1
{
    
    
    public partial class Form1 : Form
    {
    
    
        int count;//定义一个计数器
        int time;//倒计时Label从下拉框中得到他的数字,显示*秒,文字转化成数字,time从开始计时就得到这个数字
        public Form1()
        {
    
    
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
    
    
            int i;
            for (i = 1; i < 100; i++)//计数范围0~99
            {
    
    
                comboBox1.Items.Add(i.ToString()+" 秒");//将i转化成字符添加到下拉框,秒前面加一个空格,程序便于处理
            }
            //label3.Text = "";//把对应显示挪到Label3的Text
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
    
    
            count++;
            label3.Text = (time - count).ToString() + " 秒";//显示剩余时间
            progressBar1.Value = count;//设置进度条进度
            if(count==time)
            {
    
    
                timer1.Stop();//时间到,停止计时
                System.Media.SystemSounds.Asterisk.Play();//提示音
                MessageBox.Show("时间到了", "提示");//弹出提示框
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
    
    
            string str=comboBox1.Text;//将下拉框的内容添加到一个变量中
            time = Convert.ToInt16(str.Substring(0,2));//得到的设定定时值整形(从0开始查,查2位)
            progressBar1.Maximum = time;//进度条最大数值
            timer1.Start();//点击开始计时按钮,定时器开始计时
        }
    }
}

5.验证
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41600018/article/details/119079557