一起学C#上位机(三.设计倒计时器)
一.用到的控件
1.按钮:button
2.滚动条:progressbar
3.下拉列表:combobox
4.文字标签:label
5.定时器:timer
二.界面布局
新建一个空白工程,找到上面的控件之后,根据自己的需求布局界面即可,
如图:
控件的名称在属性里的Text属性中可以改,上篇已经介绍了。
将下拉框的dropdownstyle更改成dropdownlist,下拉框中的文字就不用改了,里面的元素可以在属性里面一个一个的加,也可以程序里面加。个人觉得一个一个加太累了,在程序里设置就行了。
三.构建代码
双击form窗体,进入到代码,From_load()这个函数是窗体创建之后运行的函数,下拉框的元素添加在这里,用个For循环。为什么添加在这里呢,再解释一遍,这个函数是窗体也就是界面创建的时候运行的函数,我们让界面运行的时候就创建下拉框的元素。
用for循环给下拉框类的对象combobox添加元素
private void Form1_Load(object sender, EventArgs e)
{
int i;
for (i = 1; i < 100; i++)
{
comboBox1.Items.Add(i.ToString());//将i转化成字符添加到下拉框
}
}
Items是专门添加元素的对象,下属的方法Add(),因为这时候i还是数字,,他也是个类,现在要给他转换成字符,用Tostring()方法。
编辑好了之后点一下运行看看
看到没有,下拉框的元素都有了。
设置定时器
时间为1000mS.
设置定时器的开始和停止,定时器一开始是关闭的,点击开始计时按钮的时候定时器开始计时。
定时器事件:
定时器中断,之前设置了1000mS中断一次,相当于是,1S之后if循环一次,定时器事件运行一次。
将下拉框中的文字转化成数字。
4.完整程序
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace test1
{
public partial class Form1 : Form
{
int count;//定义一个计数器
int time;//倒计时Label从下拉框中得到他的数字,显示*秒,文字转化成数字,time从开始计时就得到这个数字
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
int i;
for (i = 1; i < 100; i++)//计数范围0~99
{
comboBox1.Items.Add(i.ToString()+" 秒");//将i转化成字符添加到下拉框,秒前面加一个空格,程序便于处理
}
//label3.Text = "";//把对应显示挪到Label3的Text
}
private void timer1_Tick(object sender, EventArgs e)
{
count++;
label3.Text = (time - count).ToString() + " 秒";//显示剩余时间
progressBar1.Value = count;//设置进度条进度
if(count==time)
{
timer1.Stop();//时间到,停止计时
System.Media.SystemSounds.Asterisk.Play();//提示音
MessageBox.Show("时间到了", "提示");//弹出提示框
}
}
private void button1_Click(object sender, EventArgs e)
{
string str=comboBox1.Text;//将下拉框的内容添加到一个变量中
time = Convert.ToInt16(str.Substring(0,2));//得到的设定定时值整形(从0开始查,查2位)
progressBar1.Maximum = time;//进度条最大数值
timer1.Start();//点击开始计时按钮,定时器开始计时
}
}
}
5.验证