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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1381886.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C#之一个倒计时小应用程序的实现

只能开始计时&#xff0c;不能停止计时 代码&#xff1a; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.W…

易语言编写倒计时小程序

本人为编程爱好者&#xff0c;非专业人员。 最近工作中需要用到编写倒计时软件&#xff0c;故有此篇。 软件功能&#xff1a; 1.时间倒计时 2.倒计时会有一个透明放大的标签显示时间 3.各窗口可隐藏 以下为软件运行界面&#xff1a; 代码&#xff1a; .版本 2 .支持库 she…

DIY蓝牙小音响

PRE 我个人是比较喜欢手工做一些小东西&#xff0c;但是由于知识限制&#xff0c;我无法去制作一些复杂的东西&#xff0c;如果是一些简单的小玩具&#xff0c;如果我有能力做&#xff0c;我还是很乐意去做的。前段时间正好在看音响&#xff0c;我最后入手了一个便宜的EDIFIER…

树莓派系列二(语音识别)

树莓派的基本概念和安装系统在系列文章一中介绍了.这篇准备介绍一下语音识别. 一直想研究一下语音识别,用来做家庭物联网的控制入口,未来也许就是这样,讯飞的叮咚音响可以连接京东的物联平台,苹果的homekit平台,华为的平台暂时落后的有点多... 国内语音识别领域,我个人比较欣…

毕业设计 基于单片机的智能音响设计与实现 -物联网 嵌入式 stm32

文章目录 0 前言1 简介2 主要器件3 实现效果4 设计原理4.1 PAJ7620U2模块4.2 HC-05蓝牙模块4.3 JQ8900语音模块 5 部分核心代码6 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到…

两台电脑共享一个音响方法

两台电脑共享一个音响方法 由于某种原因&#xff0c;需要两个电脑使用同一个扬声器&#xff0c;现分享一种简单的方案 原理&#xff1a;通过主机的音频输入功能&#xff0c;将另一台电脑的音频接收过来并播放。 连线如下&#xff1a; PC2作为主设备&#xff0c;正常连接音响…

Spring IOC DI - 整合MyBatis

Spring IOC目录 主要内容Spring 框架介绍Spring 框架的优势(对比以前项目的缺点)Spring 框架引入历史发展框架学习三要素Spring 模块介绍 Spring IoC/DI - 引入IoC/DI 概念辨析使用IoC/DI的好处IoC/DI具体应用场景 Spring IoC/DI - 代码实现环境准备Spring 框架环境搭建创建Mav…

Spring框架——IOC、DI

本篇博客主要介绍Java中的IOC和DI&#xff0c;以及在String框架中的应用。首先&#xff0c;我们将对IOC和DI进行概念介绍&#xff0c;然后讲解它们的关系及在String框架中的应用&#xff0c;最后通过一个实例来展示它们的具体用法。 IOC和DI的概念介绍 IOC&#xff08;Invers…

叮咚!你点的Spring套餐来了!

儒猿技术团队最新出品&#xff1a; 《Spring顶尖高手进阶&#xff1a;互联网教育系统项目实战》 长按扫描下方二维码了解&#xff1a; 课程背景 在技术日新月异的今天&#xff0c;Spring作为Java主流开发框架&#xff0c;出道十多年仍然稳坐C位&#xff0c;经久不衰&#xff0c…

乐鑫Esp32学习之旅 17 全网首发,esp32 sdk直连京东微联·小京鱼·IoT开放平台,实现叮咚音响语音智能控制。

本系列博客学习由非官方人员 半颗心脏 潜心所力所写&#xff0c;仅仅做个人技术交流分享&#xff0c;不做任何商业用途。如有不对之处&#xff0c;请留言&#xff0c;本人及时更改。 1、 爬坑学习新旅程&#xff0c;虚拟机搭建esp32开发环境&#xff0c;打印 “Hellow World”。…

计时器setTimeout()函数、setInterval()函数

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f3c5;计时器setTimeout&#xff08;函数名&#xff0c;延迟时间&#xff09;结束计时器setTimeout &#x1f3c5;计时器setInterval&#xff08;函数名&#xff0c;延迟时间&a…

UGUI源码深度剖析

源码下载后 直接嵌入工程&#xff0c;删除引擎extension里的&#xff1b; 自制UI&#xff0c;在一个空场景中显示一个图片&#xff0c;当鼠标点击图片&#xff0c;执行操作。 gameobject &#xff1a; mesh meshfilter meshrender maintexture meshcollider camera ray

三星Note2 行货 水货 型号版本

来源&#xff1a;http://samsung.tgbus.com/201301/462040.shtml 三星Galaxy Note早期的用户定位&#xff0c;其实是喜欢大屏幕的商务男士&#xff0c;但是发售之后没想到&#xff0c;在市场中女性成为三星Galaxy Note的最大的购买群体。而比三星Galaxy Note屏幕更大的Galaxy N…

你的服务器安全吗?--服务器防渗透

1、概述 在本人所处的公司的服务器正式遭到黑客攻击之前&#xff0c;一直都以为 黑客 是个遥不可及的词&#xff0c;直到真正成为了受害者时&#xff0c;才猛然意识到安全的重要性。有一些基本经验和心得总结出来&#xff0c;和同行分享一下吧。 2、暴破手段 最粗暴的黑客行为…

数据通信——网络层(ACL)

引言 在网络中会区分三个区域&#xff1a;&#xff08;Trust&#xff09;内网&#xff0c;&#xff08;UnTrust&#xff09;外网&#xff0c;&#xff08;DM2&#xff09;非军事化区域 防火墙在网络中可以阻止DM2对Trust的访问。同理&#xff0c;从Trust到UnTrust或者UnTrust到…

微信小程序_23,分包

什么是分包: 分包指的是把一个完整的小程序项目,按照需求划分为不同的子包,在构建时,打包成不同的分包,用户在使用时按需进行加载 分包的好处: 可以优化小程序首次启动的下载时间在多团队共同开发时可以更好的解耦协作 分包前后项目的构成&#xff1a; 分包后小程序项目由1个主…

最新版南风表情包小程序独立版源码 独家最火表情包小程序源码+完整后台API+小程序前端

南风表情包小程序独立版源码 独家最火表情包小程序源码完整后台API小程序前端 南风表情包小程序源码&#xff0c;独家分享网传最火表情包小程序源码&#xff0c;带有独立版完整后台 API、小程序前端&#xff0c;并附带安装搭建说明。最近很火的表情包小程序源码&#xff0c;站…

还不错的新版南风表情包小程序源码+有搭建文档

正文: 还不错的新版南风表情包小程序源码有搭建文档&#xff0c;虽然这是一个表情包小程序&#xff0c;但是功能却不止这么单一的。 搭建教程: 1.需要一个域名且是国内的才行2.注册小程序这个就不用多说了3.一台服务器4.后台环境Nginx 1.18.0PHP-7.2mysql5.6 开启ssl php需要…

小程序源码:朋友圈发圈助手文案,头像,壁纸组合微信小程序源码下载-多玩法安装简单

这是一款为信朋友圈助手的一款小程序源码 内包含了朋友圈文案,壁纸,头像等等 每一个都包含了多个大分类 比如发捐助手有正能量,节假日祝福,搞笑段子等等 壁纸和头像自然也会有不同的分类,具体大家可以看演示图! 小程序源码下载地址&#xff1a;小程序源码&#xff1a;朋友圈…