C#上位机(定时器计数)

1.对窗体进行编辑,并对每一个控件进行属性修改
C#上位机(定时器计数)_第1张图片

1.控件可以直接拖进窗体中;
2.对每一个控件进行修改;主要修改Test(窗体显示的部分)和Name(内部函数名,一般建议大驼峰格式命名。)
3.特别是组件,一般不在窗体中显示,比如Timer,串口等。定时器上位机用到的是Timer组件,注意对其初始化时一般为1000ms。

C#上位机(定时器计数)_第2张图片
定时器初始化设置为1s。
C#上位机(定时器计数)_第3张图片
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);
	}

C#上位机(定时器计数)_第4张图片
1.ToInt16将字符串转换为十六位带符号整形,得到设定的整形定时值。
*2.public string Substring(int startIndex, int length);
子字符串从指定的字符位置开始且具有指定的长度C#上位机(定时器计数)_第5张图片
*

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("时间到!", "提示");
            }
        }
    }
}

C#上位机(定时器计数)_第6张图片
C#上位机(定时器计数)_第7张图片
C#上位机(定时器计数)_第8张图片
C#上位机(定时器计数)_第9张图片
3.对滚动条进行设置
C#上位机(定时器计数)_第10张图片
C#上位机(定时器计数)_第11张图片

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.停止计数
C#上位机(定时器计数)_第12张图片
C#上位机(定时器计数)_第13张图片
C#上位机(定时器计数)_第14张图片
C#上位机(定时器计数)_第15张图片

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#上位机(定时器计数)_第16张图片
C#上位机(定时器计数)_第17张图片
往期链接:
c# 上位机(VS2013新建一个例程).

你可能感兴趣的:(C#上位机,c#,mfc,visual,studio)