鄢颖
摘 要:计时器(Timer)控件是Visual Basic.NET(简称VB.NET)的常用控件,它提供了计时功能,可实现每隔一定时间间隔执行指定的操作,正确灵活的运用Timer控件可使程序产生更理想的效果。文章探讨了Timer控件的应用场合及使用技巧。
关键词:VB.NET;Timer控件;属性;事件
中图分类号:TP311.13 文献标识码:A 文章编号:1006-8937(2016)08-0084-02
1 Timer控件概述
Visual Basic.NET提供的计时器Timer控件,其本质上是一个具有间隔时间设置所触发的时间程序。该控件是一个非可视控件,即在应用程序运行时不可见,使我们可以将其隐藏在系统中,以某一时间间隔触发相关程序。
Interval属性是Timer控件最重要的属性之一,它决定着事件或过程发生的时间间隔,其取值范围为0~65535。Interval属性以千分之一秒为基本单位,即事件发生的最短间隔是一毫秒,这样的时间间隔对系统的要求很高,因此按时间精度的要求适当设置该属性值是程序运行速度和可靠性的一种保证。
Interval属性默认为0,不触发Timer事件。Enabled属性可设置Timer控件是否为激活状态,一旦这个属性值为False,Timer控件将无效;反之,若在某个条件下将属性值设置为true,Timer控件将会被激活,事件和过程将间隔发生。无论何时,只要Timer控件的Enabled属性被设置为true,且Interval属性值大于0,则Timer的Tick事件以Interval属性值指定的时间间隔发生。
Interval及Enabled属性值除了在属性窗口更改外,还可用程序代码实现,在Timer事件中加入如下代码即可。
Timer. Enabled=true
Timer.Interval=1 000/以1 s为时间间隔激发一次Timer事件
2 利用Timer控件实现电子秒表功能
在某些对时间精度要求较高的场合中(如跑步比赛)常需要用到秒表,可通过以下方法来实现此功能:
在窗体中添加一个Timer计时器控件Timer1,在属性窗口中将该控件的Enable属性设为True,Interval属性设为10,让其0.1 s触发一次。
增加一个Label控件Label1以显示秒表的计时时间,将它的Text属性设为空值。定义一个模块变量a为单精度类型,在窗体的Load事件中将a赋值为0,以使每次计时均从0开始;在Timer1的事件中编写响应代码:
a= a + 0.01
Label1.Text = Format(a, "###0.00 s")
按钮控件代码省略,运行程序,得到的结果如图1所示。
3 利用Timer控件实现倒计时功能
在某些考试系统的界面上有一个倒计时器控制考试的时间,在Timer事件中加入如下代码即可:
Dim time As DateTime = CDate(TextBox1.Text)
time = time.AddSeconds(-1)
TextBox1.Text = time.ToLongTimeString.ToString
其中,文本框控件TextBox1供用户输入总时长。
4 利用Timer控件实现滚动字幕效果
在窗体中设计这样的效果:一行文字在窗体中自左向右逐渐滚动,当最右边的文字到达窗体右边界时能自动弹回去,即整行文字自右向左逐渐滚动;同理,当最左边的文字到达窗体左边界时能自动改变方向向右滚动,如此反复。
首先,在窗体中加入一个Label控件Label1,其Text属性设置为要滚动显示的文字。Timer控件的Interval属性决定文字滚动的速度,其值越大滚动速度越慢,反之亦然。程序如下:
Dim a As Boolean
Private Sub Form1_Load( )
Label1.Left = 0
a = True
End Sub
Private Sub Timer1_Tick( )
If a Then
Label1.Left = Label1.Left + 20
If Label1.Left > Me.Width - Label1.Width Then a = False
Else
Label1.Left = Label1.Left - 20
If Label1.Left < 0 Then a = True
End IF
End Sub
5 利用Timer控件实现进度条功能
进度条能直观地显示某个操作正进行了多少时间,给用户提供直观的视觉反馈,使用户确信没有理由中止操作或关闭计算机。VB.NET中虽具有进度条(ProgressBar)控件,但完全可用Timer控件与Label控件共同替代。在窗体中需添加两个Label控件,Label1用于显示具体的百分比数值;Label2作为进度条滚动,其背景色设置成蓝色。Timer控件的Tick事件中加入以下代码:
Label1.Visible = True
Label2.Width = Label2.Width + 3
Label1.Text = Val(Label1.Text) + 1 & "%"
If Label2.Width = 300 Then
Label2.Width = 0
Label1.Text = 0 & "%"
End If
运行结果,如图2所示。
6 利用Timer控件实现动画效果
要制作投篮的动画效果,现将人物在不同位置不同动作的图片存为GIF文件1.gif~5.gif。在不同的时间显示不同的文件,由于更新图片速度很快,因此呈现在眼前的是连续播放的动画效果,如图3所示。
设置一个模块变量i并赋值为1,在窗体的Load事件中添加以下代码:PictureBox1.Image = Image.FromFile(Application.StartupPath & "\1.gif")
在Timer控件的Tick事件中加入以下代码:
i = i + 1
If i > 5 Then i = 1
PictureBox1.Image = Image.FromFile(Application.StartupPath & "\" & i & ".gif")
PictureBox1.Left = PictureBox1.Left + 10
7 结 语
计时器控件在实际运用中还有其他的功能,如实现报警等。善于将计时器与其他控件结合起来使用,会使程序更灵活,给观众意想不到的效果。
参考文献:
[1] 崔金宝.VB中Timer控件的应用研究[J].科技信息,2006,(7).
[2] 陈承欢.巧用VB.NET的Timer控件[J].电脑学习,2005,(2).
[3] 张秀爱.VB.NET中Timer控件的应用[J].科技信息,2007,(35).
[4] 张济仕,渠慎明.进一步运用VB中的Timer控件[J].电脑知识与技术(学 术交流),2007,(21).