写点什么

C# 使用 Timer 和 ProgressBar 控件制作一个倒计时器

作者:IC00
  • 2022 年 7 月 21 日
  • 本文字数:2394 字

    阅读完需:约 8 分钟

C# 使用Timer和ProgressBar控件制作一个倒计时器

前言

博主前几天发现一个好玩的控件,Timer 时间控件和 ProgressBar 进度条控件,于是就打算做一个倒计时的计时器,C#窗体应用是一个比较好玩的语言,你要在里面找到乐趣,因为这门语言你做的就能马上感觉到,有一种所见即所得,博主这个篇文章只是简单讲解一下,启发作用,博主只是做了一个简单的倒计时器,你可以根据自己的想法做一个计时器或者类似电子手表一样的时钟,初学者做完你还是会有成就感的觉得这么语言还阔以。

每日一遍,快乐一天!!

开头展示效果:吸引你往后看哈哈哈

1.创建窗体应用文件并设计界面

创建一个窗体类,不会的童鞋看之前的文章啦🙌🙌🙌


1.1 创建并拖 ComboBOX 控件设置属性

在这里我们设置静态的,不输入的 ComboBOX,对于 comboBOX 显示样式有三个属性



Simple是文本可编辑,下拉列表总可见;DropDown是默认样式,文本可编辑,下拉需用户点击箭头;DropDownList是文本不可编辑,下拉需用户点击箭头;需要注意的是DropDownList形式直接使用comboBox1.Text = "值";形式来赋值结果会显示为空,
复制代码

1.2 设置进度条 ProgressBar 控件

我们在使用进度条控件是需要设置进度条最大值,步进量,Value 属性博主在调用里面置零了为了方便重复调用。



需要注意ProgressBar控件的几个属性Maximum属性:用来设置或返回进度条能够显示的最大值,默认值为100。Minimum属性:用来设置或返回进度条能够显示的最小值,默认值为0。MarqueeAnimationSpeed属性:这个属性经常以毫秒为单位,显示加载的速度Step属性:用来设置或返回一个值,该值用来决定每次调用PerformStep 方法时,  Value属性增加的幅度。例如,如果要复制一组文件,则可将 Step 属性的值设置为 1,并将 Maximum 属性的值设置为要复制的文件总数。在复制每个文件时,可以调用PerformStep方法按Step属性的值增加进度栏Value属性:这个属性是用来显示控件的进度的,如果是0则进度为0,如果是100,则进度为100%;
复制代码

1.3 设置时间 Timer 控件

Timer 控件需要设置中断值,博主设置 1 秒,就是 1 秒停一下实现倒计时效果,先要打开 Timer 控件才能用哦,使用 start 打开哦



reset () :停止正在运行的计时器,重置currentCount=0, 再次调用 start() 后,将运行计时器实例,运行次数为指定的重复次数 start () :如果计时器尚未运行,则启动计时器stop () : 停止计时器。 如果在调用 stop() 后调用 start(),则将继续运行计时器实例,运行次数为剩余的 重复次数(由 repeatCount 属性设置)Interval :属性指定窗体上 Timer 事件之间的间隔(以毫秒为单位)//中止作用
复制代码


1.4 对剩余时间代码分析

博主改变了剩余时间的变化效果,每次选择都会改变剩余时间,默认为 0 秒。


1.5 对 Timer 控件代码分析

1.6 对倒计时按钮代码触发做代码处理

1.6 整体代码及运行效果

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.Windows.Forms;
namespace 倒计时{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } int count = 0;//记录次数,每次相当一秒,把time减去count实现倒计时 int time = 0;//全局变量用来得到我们comboBox的值 private void Form1_Load(object sender, EventArgs e)//赋值 { int i; for(i=1;i<100;i++)//给comboBox赋值1-99秒 { comboBox1.Items.Add(i.ToString() + "秒");//追加到Item里面 } }
private void timer1_Tick(object sender, EventArgs e)//时间控件 { count++;//每次加一 label3.Text = (time - count).ToString() + "秒";//获取倒计时总秒数减去已经过去的秒数,实现倒计时 progressBar1.Value = count; if(count==time)//当我们的count等于time说明剩余0秒 { timer1.Stop();//结束停止时间控件 System.Media.SystemSounds.Asterisk.Play();//播放系统提示音,不需要可以不写 MessageBox.Show("时间到了!");//时间到了,出现弹窗 } }
private void button1_Click(object sender, EventArgs e) { count = 0; progressBar1.Value = 0;//设置进度条为0,因为如果我们执行下一次需要把之前的已经到100%的进度条回到0 string str = comboBox1.Text; time = Convert.ToInt32(str.Substring(0,(str.Length-1)));//获取选择的秒数 // MessageBox.Show(time.ToString()); progressBar1.Maximum = time;//设置进度条最大值也就是100%为我们的timer值 timer1.Start();//开始了就会循环调用timer函数,直到停止 }
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { label3.Text = comboBox1.Text;//修改剩余时间的默认值 } }}
复制代码

效果展示:

![我的作品 2 00_00_00-00_00_30](https://gitee.com/Mahuateng69/ic/raw/master/ic00/我的作品 2 00_00_00-00_00_30.gif)

总结

博主这篇文章主要用了两个控件,一个是进度条 progressBar 控件另一个是时间 Timer 控件,实现的效果还蛮好玩,对于初学者学习窗体应用是一个很好的入门小程序,最主要感觉没什么难度,如果使用其他语言可能比较难,哈哈哈,对了提一下,我们 Timer 控件使用比较多哦,在窗体应用里面,类似循环吧,好处是可以停止效果,比如你需要做什么接收处理,就可以利用这个控件每多少秒执行一次,因为它可以中断。好了,创作不易点赞关注评论收藏哦。



用户头像

IC00

关注

还未添加个人签名 2022.07.14 加入

还未添加个人简介

评论

发布
暂无评论
C# 使用Timer和ProgressBar控件制作一个倒计时器_C#_IC00_InfoQ写作社区