1.对窗体进行编辑,并对每一个控件进行属性修改
1.控件可以直接拖进窗体中;
2.对每一个控件进行修改;主要修改Test(窗体显示的部分)和Name(内部函数名,一般建议大驼峰格式命名。)
3.特别是组件,一般不在窗体中显示,比如Timer,串口等。定时器上位机用到的是Timer组件,注意对其初始化时一般为1000ms。
定时器初始化设置为1s。
2.编写函数
2.1 实现下拉框列表中有数据,并对其进行初始化。实现该功能,在窗体函数中撰写。双击窗体部分,创建函数。
//窗体函数
private void FormTimerTest_Load(object sender, EventArgs e)
{
//下拉框计数范围
for (int i = 1; i < 100; i++)
{
//初始化下拉框,数字后加一个空格是为了更容易获取字符
//每一个变量都属于一个对象,i.ToString()获取字符串。
comboBox1Count.Items.Add(i.ToString() + " 秒");
}
//默认下拉框显示为“1 秒”
comboBox1Count.Text = "1 秒";
}
//开始计时按钮函数
private void button1Start_Click(object sender, EventArgs e)
{
//存储设定的定时值
int time = 0;
//将下拉框数添加至一个变量中
string str = comboBox1Count.Text;
//获取str中的子字符串,占两个字节,从0号位置开始。注意此汉字占一个字节。
string data = str.Substring(0,2);
//将字符串转换为十六位带符号整形,得到设定的整形定时值。
time = Convert.ToInt16(data);
}
1.ToInt16将字符串转换为十六位带符号整形,得到设定的整形定时值。
*2.public string Substring(int startIndex, int length);
子字符串从指定的字符位置开始且具有指定的长度
*
2.2 实现定时器函数,实现该功能,双击定时器组件。
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 Timer
{
public partial class FormTimerTest : Form
{
//存储设定的定时值
int time = 0;
//用于定时器计数
int count = 0;
public FormTimerTest()
{
InitializeComponent();
}
//开始计时按钮函数
private void button1Start_Click(object sender, EventArgs e)
{
//将下拉框数添加至一个变量中
string str = comboBox1Count.Text;
//获取str中的子字符串,占两个字节,从0号位置开始。注意此汉字占一个字节。
string data = str.Substring(0, 2);
//将字符串转换为十六位带符号整形,得到设定的整形定时值。
time = Convert.ToInt16(data);
//开始计时
timer1.Start();
}
//窗体函数
private void FormTimerTest_Load(object sender, EventArgs e)
{
//下拉框计数范围
for (int i = 1; i < 100; i++)
{
//初始化下拉框,数字后加一个空格是为了更容易获取字符
//每一个变量都属于一个对象,i.ToString()获取字符串。
comboBox1Count.Items.Add(i.ToString() + " 秒");
}
//默认下拉框显示为“1 秒”
comboBox1Count.Text = "1 秒";
}
//定时器函数
private void timer1_Tick(object sender, EventArgs e)
{
//记录当前秒数。初始化是1000ms
count++;
//获取剩余的秒数,time是设置的定时值,count是系统每经过1秒,则加一次。即(time - count)是剩余的时间。
int remain = time - count;
//将剩余的描述显示在label3RemainTimeCount控件中。
label3RemainTimeCount.Text = remain.ToString() + " 秒";
//count == time则时间到
if (count == time)
{
//停止计时
timer1.Stop();
//设置提示音
System.Media.SystemSounds.Asterisk.Play();
//弹出提示框
MessageBox.Show("时间到!", "提示");
}
}
}
}
3.对滚动条进行设置
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 Timer
{
public partial class FormTimerTest : Form
{
//存储设定的定时值
int time = 0;
//用于定时器计数
int count = 0;
public FormTimerTest()
{
InitializeComponent();
}
//开始计时按钮函数
private void button1Start_Click(object sender, EventArgs e)
{
//将下拉框数添加至一个变量中
string str = comboBox1Count.Text;
//获取str中的子字符串,占两个字节,从0号位置开始。注意此汉字占一个字节。
string data = str.Substring(0, 2);
//将字符串转换为十六位带符号整形,得到设定的整形定时值。
time = Convert.ToInt16(data);
//设置进度条最大值
progressBar1Time.Maximum = time;
//开始计时
timer1.Start();
}
//窗体函数
private void FormTimerTest_Load(object sender, EventArgs e)
{
//下拉框计数范围
for (int i = 1; i < 100; i++)
{
//初始化下拉框,数字后加一个空格是为了更容易获取字符
//每一个变量都属于一个对象,i.ToString()获取字符串。
comboBox1Count.Items.Add(i.ToString() + " 秒");
}
//默认下拉框显示为“1 秒”
comboBox1Count.Text = "1 秒";
}
//定时器函数
private void timer1_Tick(object sender, EventArgs e)
{
//记录当前秒数。初始化是1000ms
count++;
//获取剩余的秒数,time是设置的定时值,count是系统每经过1秒,则加一次。即(time - count)是剩余的时间。
int remain = time - count;
//将剩余的描述显示在label3RemainTimeCount控件中。
label3RemainTimeCount.Text = remain.ToString() + " 秒";
//设置进度条进度
progressBar1Time.Value = count;
//count == time则时间到
if (count == time)
{
//停止计时
timer1.Stop();
//设置提示音
System.Media.SystemSounds.Asterisk.Play();
//弹出提示框
MessageBox.Show("时间到!", "提示");
}
}
}
}
4.停止计数
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 Timer
{
public partial class FormTimerTest : Form
{
//存储设定的定时值
int time = 0;
//用于定时器计数
int count = 0;
public FormTimerTest()
{
InitializeComponent();
}
//开始计时按钮函数
private void button1Start_Click(object sender, EventArgs e)
{
//如果按钮显示“开始计时”
if (button1Start.Text == "开始计时")
{
//防止下拉框没有设置默认值,造成的程序崩溃
if (comboBox1Count.Text == "" && count == 0)
{
MessageBox.Show("请选择时间!","提示!");
}
else
{
//将下拉框数添加至一个变量中
string str = comboBox1Count.Text;
//获取str中的子字符串,占两个字节,从0号位置开始。注意此汉字占一个字节。
string data = str.Substring(0, 2);
//将字符串转换为十六位带符号整形,得到设定的整形定时值。
time = Convert.ToInt16(data);
//设置进度条最大值
progressBar1Time.Maximum = time;
//开始计时
timer1.Start();
//计时完成后显示“停止计时”
button1Start.Text = "停止计时";
}
}
//如果按钮显示“停止计时”
else if (button1Start.Text == "停止计时")
{
//停止计时
timer1.Stop();
//进度条为当前值
progressBar1Time.Value = count;
//停止计时后下一步能进行的就是继续计时,或者重新运行程序开始计时。
button1Start.Text = "继续计时";
}
//如果按钮显示“继续计时”
else if (button1Start.Text == "继续计时")
{
//开始计时
timer1.Start();
//继续计时后下一步能进行的就是停止计时。
button1Start.Text = "停止计时";
}
}
//窗体函数
private void FormTimerTest_Load(object sender, EventArgs e)
{
//下拉框计数范围
for (int i = 1; i < 100; i++)
{
//初始化下拉框,数字后加一个空格是为了更容易获取字符
//每一个变量都属于一个对象,i.ToString()获取字符串。
comboBox1Count.Items.Add(i.ToString() + " 秒");
}
//默认下拉框显示为“1 秒”
//comboBox1Count.Text = "0 秒";
}
//定时器函数
private void timer1_Tick(object sender, EventArgs e)
{
//记录当前秒数。初始化是1000ms
count++;
//获取剩余的秒数,time是设置的定时值,count是系统每经过1秒,则加一次。即(time - count)是剩余的时间。
int remain = time - count;
//将剩余的描述显示在label3RemainTimeCount控件中。
label3RemainTimeCount.Text = remain.ToString() + " 秒";
//设置进度条进度
progressBar1Time.Value = count;
//count == time则时间到
if (count == time)
{
//停止计时
timer1.Stop();
//执行完程序后,恢复最初状态
//停止计时后,将进度条的值初始化0
progressBar1Time.Value = 0;
//定时数也设置为0
count = 0;
//开始计时
button1Start.Text = "开始计时";
//设置提示音
System.Media.SystemSounds.Asterisk.Play();
//弹出提示框
MessageBox.Show("时间到!", "提示");
}
}
}
}
5.运行后结果
往期链接:
c# 上位机(VS2013新建一个例程).