前言
博主前几天发现一个好玩的控件,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 控件使用比较多哦,在窗体应用里面,类似循环吧,好处是可以停止效果,比如你需要做什么接收处理,就可以利用这个控件每多少秒执行一次,因为它可以中断。好了,创作不易点赞关注评论收藏哦。
评论