1. 直接用winform 的 timers
拖控件进去
代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int sum = 0;
int qian;
int bai;
int shi;
int ge;
private void Form1_Load(object sender, EventArgs e)//初始化
{
textBox1.Text = "00.00";
timer1.Interval = 1000;
timer1.Stop();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Owner = this;
this.Hide();
f2.Show(); //窗体2返回在窗体2写代码 this.Hide(); this.Owner.Show();
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)//winform的timer,不精确
{
sum++;
qian = sum / 1000;
bai = sum % 1000 / 100;
shi = sum % 100 / 10;
ge = sum % 10;
textBox1.Text = qian.ToString() + bai.ToString() + "." + shi.ToString() + ge.ToString();
}
2.使用System.Timers.Timer
先定义System.Timers.Timer t;
private void Form1_Load(object sender, EventArgs e)//初始化
{
textBox1.Text = "00.00";
t = new System.Timers.Timer(1000);
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
}
private void button2_Click(object sender, EventArgs e)
{
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
//如果不写下面这句会有一个异常。
//异常:线程间操作无效: 从不是创建控件"richtextbox"的线程访问它
//但这不是最好的方法。如果只有一个进程调用richtextbox而已。就可以用下面这句
//如果有多个线程调用richtextbox等控件。就要用委托。见thread第二种方法
Control.CheckForIllegalCrossThreadCalls = false;
}
private void theout(object sender, EventArgs e)
{
sum++;
qian = sum / 1000;
bai = sum % 1000 / 100;
shi = sum % 100 / 10;
ge = sum % 10;
textBox1.Text = qian.ToString() + bai.ToString() + "." + shi.ToString() + ge.ToString();
}
3.thread
Thread th;//定义线程
private void Form1_Load(object sender, EventArgs e)//初始化
{
textBox1.Text = "00.00";
th=new Thread(calculate);
th.IsBackground = true;
}
private void button2_Click(object sender, EventArgs e)
{
th.Start();
//Control.CheckForIllegalCrossThreadCalls = false; 同2,不写会报错
}
private void calculate()//线程的第一种方法
{
while(true)
{
sum++;
qian = sum / 1000;
bai = sum % 1000 / 100;
shi = sum % 100 / 10;
ge = sum % 10;
textBox1.Text = qian.ToString() + bai.ToString() + "." + shi.ToString() + ge.ToString();
Thread.Sleep(1000);
}
}
下面第二种方法:
private delegate void FlushClient();//定义委托
private void Form1_Load(object sender, EventArgs e)//初始化
{
textBox1.Text = "00.00";
th = new Thread(CrossThreadFlush);//线程第二种方法
th.IsBackground = true;
}
private void CrossThreadFlush()//第二种方法
{
while (true)
{
Thread.Sleep(1000);
ThreadFunction();
}
}
private void ThreadFunction()//第二种方法
{
if (this.textBox1.InvokeRequired)//等待异步
{
FlushClient fc = new FlushClient(ThreadFunction);
this.Invoke(fc);//通过代理调用刷新方法
}
else
{
sum++;
qian = sum / 1000;
bai = sum % 1000 / 100;
shi = sum % 100 / 10;
ge = sum % 10;
textBox1.Text = qian.ToString() + bai.ToString() + "." + shi.ToString() + ge.ToString();
}
}
- javase-常用三种遍历方法
javase-常用三种遍历方法 import java.util.ArrayList; import java.util.Iterator; import java.util.List; public ...
- JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
- Java中Map的三种遍历方法
Map的三种遍历方法: 1. 使用keySet遍历,while循环: 2. 使用entrySet遍历,while循环: 3. 使用for循环遍历. 告诉您们一个小秘密: (下↓面是测试代码,最爱看 ...
- Jquery中each的三种遍历方法
Jquery中each的三种遍历方法 $.post("urladdr", { "data" : "data" }, function(dat ...
- spring与mybatis三种整合方法
spring与mybatis三种整合方法 本文主要介绍Spring与Mybatis三种常用整合方法,需要的整合架包是mybatis-spring.jar,可通过链接 http://code.googl ...
- C#使用DataSet Datatable更新数据库的三种实现方法
本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参 ...
- struts2拦截器interceptor的三种配置方法
1.struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts> <package name="struts2" extend ...
- selenium webdriver三种等待方法
webdriver三种等待方法 1.使用WebDriverWait from selenium import webdriverfrom selenium.webdriver.common.by im ...
- ASP.NET文件上传的三种基本方法
ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. <form i ...
随机推荐
- postgres Date/Time 学习笔记
一.Date/Time Types 参考文档:https://www.postgresql.org/docs/9.2/static/datatype-datetime.html Types 别名 ti ...
- Linux中vim文本编辑器的介绍和使用方法
vim主要模式介绍,vim命令模式. 确保系统已经安装了VIM工具 [root@panda ~]# rpm -qf `which vim` [root@panda ~]# rpm -qf `which ...
- Spring Boot - Profile配置
Profile是什么 Profile我也找不出合适的中文来定义,简单来说,Profile就是Spring Boot可以对不同环境或者指令来读取不同的配置文件. Profile使用 假如有开发.测试.生 ...
- LeetCode--No.015 3Sum
15. 3Sum Total Accepted: 131800 Total Submissions: 675028 Difficulty: Medium Given an array S of n i ...
- 使用pyenv来管理python版本
使用pyenv可以很方便的切换python版本,而不会影响系统的python版本,对需要使用supervisor(仅支持python2)托管程序,项目使用python3开发的情况十分有用 pyenv的 ...
- python面试
第一部分 python基础篇 1.简述解释型和编译型编程语言? 解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候才翻译.这样解释型语言 ...
- Rsync文件同步工具
前段时间因公司需求,需要把备份的文件进行同步保存,后面就想到了我们大家都最熟悉的文件同步工作Rsync,于是就捣鼓了一下午时间,然后总结了下大概过程和参数详情. 首先了解了下rsync同步的大致原理: ...
- PHP-CPP开发扩展(六)
PHP-CPP是一个用于开发PHP扩展的C++库.本节讲解在C++中PHP异常.变量.常量的实现相关知识. 异常 PHP和C++都支持异常,而PHP-CPP库这两种语言之间的异常处理是完全透明的.你在 ...
- 解决Windows英文版中文软件乱码的问题
由于工作的原因,我们的开发环境都是基于英文的,但是在打开一些基于中文编码的软件的时候经常会出现乱码的情况.其实只要打开控制面板按照下面的步骤稍微设置一下,就可以完美的在英文操作系统下支持中文软件了,因 ...
- shell | {}和()
执行 bash -n xx.sh用于检测脚本语法是否有错误 bash -x xx.sh用于追踪执行 ${var} 用于限定变量名称的范围,并且支持通配符 $(cmd) shell会先执行括号的cmd, ...