• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

VS2015+C#实现不完美的倒计时小程序

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

开发环境:

Windows10操作系统

Visual Studio 2015社区版

第一步:百度搜索VS2015C#开发环境的搭建,总计起来一句话就是:默认配置换个路径

1.1 启动之后如下图所示,是2015社区版吧,我没骗你。

1.2 打开我们的VS2015以后,接着就是新建项目啦,也可以在菜单栏:文件-新建-项目完成此操作

1.3 我们要写的就是windows窗体应用程序啦,按照下图说的来就好了,其他不用变,到这里,我们就创建好了一个新的窗体项目

最后我们来看一下,完成之后的样子,我在这里列出了一些常用功能的说明,抛砖引玉一波,(●ˇ∀ˇ●)

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

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; //清空进度条
               
            }

        }

复选框:有多种类型,我们需要的是带下拉列表的,按图示配置

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 说一下进度条配置相关函数
            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.实际使用效果


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
微信小程序-怎么获取当前页面的url发布时间:2022-07-18
下一篇:
微信小程序发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap