Timer计时器
一、 Timer类。
Timer类是微软封装的专门用来计时的计时器,在C#语言当中这样的类一共有三个,他们分别是System.Timers、System.Threading、System.Windows.Forms三个名词空间,这三个名词空间中的Timer类都分别使用在不同的地方,咱们这节课学习的是在System.Windows.Forms名词空间里的Timer类。
使用方式:Timer tr = new Timer();
二、 Timer类属性。
类型 | 属性 | 访问方式 | 说明 |
int | Interval | 读/写 | 获取或设置计时器开始计时的时间间隔(以毫秒为单为) |
Bool | Enabled | 读/写 | 获取或设置计时器是否正在运行。 |
在我们使用到计时器时,Interval属性是至关重要的一个环节,这个属性就是用来专门设置计时器间隔时间的,如果不设置这个属性那么我们的计时器就不知道应该多久计算一次。
三、 Timer类方法。
返回值类型 | 方法名称 | 说明 |
void | Start | 开启计时器。 |
void | Stop | 关闭计时器。 |
这两个方法与上面我们讲的Enabled属性设置的目的是一样的,设置Enabled或者使用这两个方法都可以。
四、 Timer类事件。
事件 | 方法 | 委托 | 参数 |
Tick | OnTick | EventHandler | EventArgs |
这个事件是当上边的那个时间间隔到时的时候才会被触发的,想使用这个计时器需要很多的步骤,以上的属性、事件与方法却一不可。
例
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Hty
{
class MyForm : Form
{
static void Main()
{
Application.Run(new MyForm());
}
public MyForm()
{
this.Text = "定时器";
Timer tr = new Timer();
tr.Interval = 1000;
tr.Start();
tr.Tick += new EventHandler(tr_Tick);
}
int a;
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics grfx = e.Graphics;
grfx.DrawString(a.ToString(),new Font("宋体",10),Brushes.Black,0,0);
a++;
}
void tr_Tick(object sender, EventArgs e)
{
Invalidate();
}
}
}
五、 DateTime(时间与日期)结构。
DateTime结构是微软为我们封装的专门提供日期与时间的结构,这个结构里有很多我们经常要使用的只读属性,比如当前计算机的时间等等。
使用方法1:DateTime dt = new DateTime(int year,int month,int day);
使用方法2:DateTime dt = new DateTime(int year,int month,int day,int hour,
int minute,int secomd);
使用方法3:DateTime dt = new DateTime(int year,int month,int day,int hour,
int minute,int secomd,int msee);
类型 | 属性 | 访问方式 | 说明 |
int | Year | 读 | 获取年。 |
int | Month | 读 | 获取月。 |
int | Day | 读 | 获取日。 |
int | Aour | 读 | 获取时。 |
int | Minute | 读 | 获取分。 |
int | Second | 读 | 获取秒。 |
int | Millisecond | 读 | 获取毫秒。 |
DateTime | Date | 读 | 返回日期。 |
以上的属性都是只读的,专门用来获取当前DateTime结构中的日期与时间,大家可能觉得我们如果在初始化时直接写进去时间了那么还需要在获得吗?如果只是这样的话是有些多余了,但是DateTime结构有一点非常好就是它可以支持对象与对象之间的运算,例如加法与减法,这样我们就可以来运算时间差了,之后在通过这个属性获得时间差时间就非常有用了。
六、 DateTime(时间与日期)结构静态属性。
类型 | 属性 | 访问方式 | 说明 |
DateTime | Now | 读 | 获取年月日与时间。 |
DateTime | Today | 读 | 获取年月日。 |
DateTime | UtcNow | 读 | 获取国际统一标准时间。 |
以上三个属性中Now属性对我们非常有用,它可以获取当前计算机的日期与时间并且也可以通过一些小技巧单独只获取年、月、日、时、分、秒的方式。
当使用C#自带的DateTimer类的静态方法NOW想获取系统时间时。
如果想只获取年月日的时候DateTimer.Now.Tostring("d")在Tostring中加入d字符即可。
如果想只获取时分秒的时候DateTimer.Now.Tostring("T")在Tostring中加入T字符即可。
单独获取日(dd)
单独获取月(MM)
单独获取年(yyyy)
单独获取时(HH)
单独获取分(mm)
单独获取秒(ss)
重点:注意大小写字母
七、 DateTime(时间与日期)结构方法。
返回值类型 | 方法名称 | 说明 |
DateTime | TolocalTime | 将本地时间转换为国际时间后返回。 |
DateTime | ToUniversalTime | 将国际时间转换为本地时间后返回。 |
例:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Hty
{
class MyForm : Form
{
static void Main()
{
Application.Run(new MyForm());
}
public MyForm()
{
this.Text = "定时器";
Timer tr = new Timer();
tr.Interval = 1000;
tr.Start();
tr.Tick += new EventHandler(tr_Tick);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics grfx = e.Graphics;
float height = (grfx.MeasureString("a", new Font("宋体", 10))).Height;
grfx.DrawString(DateTime.Now.ToString("dd"),new Font("宋体",10),Brushes.Black,0,0);
grfx.DrawString(DateTime.Now.ToString("MM"), new Font("宋体", 10), Brushes.Black, 0, height);
grfx.DrawString(DateTime.Now.ToString("yyyy"), new Font("宋体", 10), Brushes.Black, 0, height * 2);
grfx.DrawString(DateTime.Now.ToString("HH"), new Font("宋体", 10), Brushes.Black, 0, height * 3);
grfx.DrawString(DateTime.Now.ToString("mm"), new Font("宋体", 10), Brushes.Black, 0, height * 4);
grfx.DrawString(DateTime.Now.ToString("ss"), new Font("宋体", 10), Brushes.Black, 0, height * 5);
}
void tr_Tick(object sender, EventArgs e)
{
Invalidate();
}
}
}