VS2015+C#实现倒计时小程序

最近疫情严重,在家呆着也是呆着,于是就想学一下上位机的编写,权衡利弊之后,选择了C#语言,原因是据说它写出来的上位机比较小,不占内存。开发环境就用VS吧,用的人挺多的。好了,进入正题。此帖子为记录贴,要是没能帮助到你,请多多见谅。

开发环境:

Windows10操作系统

Visual Studio 2015社区版

第一步:百度搜索VS2015C#开发环境的搭建

1.1 启动之后如下图所示,版本:2015社区版

1.2 安装完成以后,接着就是新建项目,可以在开始界面直接创建项目,也可以在菜单栏中的:文件-新建-项目完成此操作

1.3 项目配置按照下图说的来就好了,其他不用变,点击确定我们就得到了创建好的一个新的窗体项目

新建的项目如下图所示,我在这里列出了一些常用功能的说明,抛砖引玉一波,(●ˇ∀ˇ●)

第二步:构思一下一个倒计时小程序长什么样子

2.1 应该有个输入框,可以输入要计时的数字对吧,还应该有个启动按钮对吧....

        除了上面提到的控件外,还有不可见控件,分别是定时器和提示文本框。这两个有什么用呢?先说提示文本框吧,用户在输入需要计时的数字时候,有可能不按规矩来或者误输入,比如输入“0”秒,这个时候咋办呢?一方面我们可以在软件中对其限制,另外我们也可以使用温馨提示,告知用户不能随便输入。这个东西就是做这个用的。至于定时器,很简单,既然我们要计时,肯定要使用它。定时器还有一个中断服务函数,就是在设定的定时时间到之时,自动调用这个服务函数,学过单片机的朋友应该很容易就理解了,要是你是个萌新,也不要紧,你就记住,定时时间到就会调用它。

第三步,构思交互过程,编写代码

3.1假设你是这个倒计时器的使用者,你会怎么做?把这个过程想清楚。

       先来粗略的,输入框输入计时,点击开始计时,进度条移动,定时时间到,停止计时并提醒

       3.1.1 双击控件,就会进入该控件被点击时候调用的函数,这里做个说明,控件属性是控件对控件本身的配置

而事件是指对控件进行什么样的操作,它会自动生成一个函数,函数里就是我们要写的这个动作之后要做的事。

比如我使用了点击按钮这一事件,在事件函数里,我启动了定时器。

      3.1.2 定时器和复选框注意事项

       定时器:需要在Interval一栏设置中断时间,单位是ms毫秒

 定时器中断服务函数:timerx_Tick(object sender, EventArgs e),下面是我的源码

        private void timer1_Tick(object sender, EventArgs e)
        {

            progressBar1.PerformStep();//进度条递增
            label3.Text = Convert.ToString(time_dec--) + (" 秒"); //显示递减
            if ((time_dec) == -1)
            {
                timer1.Stop();//停止计时
                button1.Text = "开始计时"; //转换显示按钮
                MessageBox.Show("您设定的时间到了!");//提示框
                progressBar1.Value = 0; //清空进度条
               
            }

        }

ComBox有多种类型,我们需要的是带下拉列表的,在VS右下角小图标按图示配置

3.2 我们来尝试写一下“开始计时”按钮的事件函数,也就是我们在按下按钮时候会发生什么事情,双击按钮进入点击事件函数,

你会发现系统自动产生了一个函数button1_Click_1,由于我之前改动过,名字有点不一样。函数名很直白了,按钮1单击。哈哈

哈,你会发现所有的函数名都和这个类似。那我们就写一下按下按钮会发生什么吧。

   //开始按钮事件函数
        private void button1_Click_1(object sender, EventArgs e)
        {
            //这里限制了输入只能是数字
            if (textBox1.Text == string.Empty || textBox1.Text == "0")
            {
                MessageBox.Show("请输入正确数值!"); //弹框提醒
                return;
            }
            button1.Text = "停止计时"; //变换按钮显示文字
            Button_Con_Flag = !Button_Con_Flag;
            progres_bar_display(); //运行自定义函数
            timer1.Start(); //启动定时器
            if (Button_Con_Flag)  //点击停止按钮
            {
                timer1.Stop(); //关闭定时器
                progressBar1.Value= 0; //清空进度条
                label3.Text = "0 秒";  //提示文本归零
                button1.Text = "开始计时"; //转换显示按钮
            }

        }

 

3.2.1 进度条配置相关函数,假如进度条从0-100开始,步进值为2,那么走完进度条需要50次,依此类推
            progressBar1.Minimum = 0; //最小值或者起点配置
            progressBar1.Maximum =  max; //最大值或终点值配置
            progressBar1.Value = 1;  //进度条显示1开0关
            progressBar1.Step = 1;  //步进值

            progressBar1.PerformStep();//进度条递增显示

附上源代码:

以下函数和代码在Form1.cs中

namespace COMHELPER
{
    public partial class Form1 : Form
    {
        bool Button_Con_Flag = true;
        Int64 time_dec = 0;
        public Form1()
        {
            InitializeComponent();
        }


        //整个窗体初始化配置
        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.Text = "秒"; //初始化复选框
            label3.Text = "0 秒"; //动态零点

        }

        //时基复选框
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            label3.Text = "0 " + comboBox1.Text;//文本框
        }

        //开始按钮
        private void button1_Click_1(object sender, EventArgs e)
        {
            //首先判断输入是否正确
            if (textBox1.Text == string.Empty || textBox1.Text == "0")
            {
                MessageBox.Show("请输入正确数值!");
                return;
            }
            button1.Text = "停止计时"; //变换按钮显示文字
            Button_Con_Flag = !Button_Con_Flag;
            progres_bar_display(); //运行自定义函数
            timer1.Start();
            if (Button_Con_Flag)  //点击停止按钮
            {
                timer1.Stop(); //关闭定时器
                progressBar1.Value= 0; //清空进度条
                label3.Text = "0 秒";  //提示文本归零
                button1.Text = "开始计时"; //转换显示按钮
            }

        }

        //限制输入类型为纯数字
        //禁止输入0或者不输入
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = e.KeyChar < '0' || e.KeyChar > '9';  //允许输入数字
            if (e.KeyChar == (char)8)  //允许输入回退键
            {
                e.Handled = false;
            }
        }

        private void label3_Click(object sender, EventArgs e)
        {

        }

        //定时器中断
        private void timer1_Tick(object sender, EventArgs e)
        {

            progressBar1.PerformStep();//进度条递增
            label3.Text = Convert.ToString(time_dec--) + (" 秒"); //显示递减
            if ((time_dec) == -1)
            {
                timer1.Stop();//停止计时
                button1.Text = "开始计时"; //转换显示按钮
                MessageBox.Show("您设定的时间到了!");//提示框
                progressBar1.Value = 0; //清空进度条
               
            }

        }

        //自定义函数
        //函数名称:progres_bar_display()
        //参数类型:empty
        //函数功能:从输入框获取定时值
        private void progres_bar_display()
        {
            int[] max_base = new int[3] { 1, 60, 3600};
            progressBar1.Minimum = 0;
            progressBar1.Maximum = (max_base[ comboBox1.SelectedIndex])*Convert.ToInt16(textBox1.Text);
            time_dec = (max_base[comboBox1.SelectedIndex])*Convert.ToInt16(textBox1.Text)-1;
            progressBar1.Value = 1;
            progressBar1.Step = 1;
        }

        private void textBox1_MouseHover(object sender, EventArgs e)
        {
            toolTip1.SetToolTip(this.textBox1, @"请输入大于“0”的数字"); 
        }
    }
}

 

4.实际使用效果

最后附上完整源码和工程链接:https://download.csdn.net/download/BadBoyHolly/12273686

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vicssic

与你一起成长

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值