按照之前步骤新建一个完整的工程,我这里命名为Lesson3,完成后修改窗体的的名称为“倒计时器”如下图
根据所需要的界面依次添加所以需要的控件(按键、进度条、下拉框、文字及定时器等)并根据需要修改对应的参数
这里要注意的是定时器的值默认的参数是100,这里的单位是ms单位,所以在需要秒中断的时候我们改成1000ms。
3.上面的工作完成了那接下来就需要在代码栏中写代码了。
理下思路,代码主要分为有三个部分:
1、初始化部分
初始化部分最主要的工作就是把下拉框中的值给准备好。这里需要说明一点,下拉框默认是可以输入字符的,这里修改一个参数让其不能键入字符,其实这里也可以不用带代码中写,也简单的记上一笔,简单的方法就是在下拉框的属性“集合”中修改,如下图,根据需求来修改即可,但是得注意格式。这里不多说。
第二种就是键入代码了,用代码修改的好处就是不用做那么多的重复动作。比如要添加1000个,那用第一个方法绝对会写到手抽筋。双击窗体进入代码区(注意这里是双击窗体并非下拉框),添加如下代码:
private void Form1_Load(object sender, EventArgs e) { int i; for (i = 1; i < 100; i++) { comboBox1.Items.Add(i.ToString() + " 秒"); //在下拉框里面添加字符,i数字形式,用了ToStfing是转换到字符形式 } comboBox1.Text = "1 秒"; //给下拉框赋初始值,不然在没有手动选择下拉框时间就点击开始的时候因为数值转换问题会报错 }
可以理解为在创建窗体的时候初始化并创建下拉列表的内容。
至于代码为什么这样写,这里需要自行学习下对象和类的概念(这个在前期java学习笔记中简要的提到过,比较类似),还有就是要熟悉这个类里面的一些方法(可以理解成函数),都给我们封装好了,用起来也很简单。这里还需要注意的是在此C#程序中一个中文和一个字符的占用都是一个字节。因为有个位的定时和十位的定时(这里是字符形式呈现),所以到时候会把字符重新转换成数字赋值给进度条,这就存在转换问题了,Convert这个类也很好用,里面全是转换的方法,在“秒”前面加上了一个空格的画就可以方便的把个位数和十位数都当作两个字符来处理,方便取得数值。
2、按键部分
双击开始按钮控件进入代码编程,添加如下代码:
private void button1_Click(object sender, EventArgs e) { counter = 0;//全局变量清零 string str = comboBox1.Text;//得到下拉框当前的字符串 timer1.Start();//启动定时器 Max_time = Convert.ToInt16(str.Substring(0,2)); //str.Substring(0,2)得到str字符串的前两个字符 //把得到的两个字符转成整形赋值给Max_time progressBar1.Maximum = Max_time; //将进度条的最大值初始化 timer1.Start();//开启定时器 }3、定时器中断部分
双击定时器控件进入代码编程,添加如下代码:
private void timer1_Tick(object sender, EventArgs e) { counter++;//每次秒中断自增 progressBar1.Value = counter;//设置进度条的当前值 if (counter == Max_time) { timer1.Stop();//到时间则停止定时器 System.Media.SystemSounds.Asterisk.Play();//提示音 MessageBox.Show("时间到了","提示");//弹出提示框 } }
以上完成之后检查无误应该就差不多完成了,贴上最终的效果图:
以上便是所有内容。
By Urien 2018年2月11日 23:29:21