鄢穎
摘 要:計(jì)時(shí)器(Timer)控件是Visual Basic.NET(簡稱VB.NET)的常用控件,它提供了計(jì)時(shí)功能,可實(shí)現(xiàn)每隔一定時(shí)間間隔執(zhí)行指定的操作,正確靈活的運(yùn)用Timer控件可使程序產(chǎn)生更理想的效果。文章探討了Timer控件的應(yīng)用場(chǎng)合及使用技巧。
關(guān)鍵詞:VB.NET;Timer控件;屬性;事件
中圖分類號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-8937(2016)08-0084-02
1 Timer控件概述
Visual Basic.NET提供的計(jì)時(shí)器Timer控件,其本質(zhì)上是一個(gè)具有間隔時(shí)間設(shè)置所觸發(fā)的時(shí)間程序。該控件是一個(gè)非可視控件,即在應(yīng)用程序運(yùn)行時(shí)不可見,使我們可以將其隱藏在系統(tǒng)中,以某一時(shí)間間隔觸發(fā)相關(guān)程序。
Interval屬性是Timer控件最重要的屬性之一,它決定著事件或過程發(fā)生的時(shí)間間隔,其取值范圍為0~65535。Interval屬性以千分之一秒為基本單位,即事件發(fā)生的最短間隔是一毫秒,這樣的時(shí)間間隔對(duì)系統(tǒng)的要求很高,因此按時(shí)間精度的要求適當(dāng)設(shè)置該屬性值是程序運(yùn)行速度和可靠性的一種保證。
Interval屬性默認(rèn)為0,不觸發(fā)Timer事件。Enabled屬性可設(shè)置Timer控件是否為激活狀態(tài),一旦這個(gè)屬性值為False,Timer控件將無效;反之,若在某個(gè)條件下將屬性值設(shè)置為true,Timer控件將會(huì)被激活,事件和過程將間隔發(fā)生。無論何時(shí),只要Timer控件的Enabled屬性被設(shè)置為true,且Interval屬性值大于0,則Timer的Tick事件以Interval屬性值指定的時(shí)間間隔發(fā)生。
Interval及Enabled屬性值除了在屬性窗口更改外,還可用程序代碼實(shí)現(xiàn),在Timer事件中加入如下代碼即可。
Timer. Enabled=true
Timer.Interval=1 000/以1 s為時(shí)間間隔激發(fā)一次Timer事件
2 利用Timer控件實(shí)現(xiàn)電子秒表功能
在某些對(duì)時(shí)間精度要求較高的場(chǎng)合中(如跑步比賽)常需要用到秒表,可通過以下方法來實(shí)現(xiàn)此功能:
在窗體中添加一個(gè)Timer計(jì)時(shí)器控件Timer1,在屬性窗口中將該控件的Enable屬性設(shè)為True,Interval屬性設(shè)為10,讓其0.1 s觸發(fā)一次。
增加一個(gè)Label控件Label1以顯示秒表的計(jì)時(shí)時(shí)間,將它的Text屬性設(shè)為空值。定義一個(gè)模塊變量a為單精度類型,在窗體的Load事件中將a賦值為0,以使每次計(jì)時(shí)均從0開始;在Timer1的事件中編寫響應(yīng)代碼:
a= a + 0.01
Label1.Text = Format(a, "###0.00 s")
按鈕控件代碼省略,運(yùn)行程序,得到的結(jié)果如圖1所示。
3 利用Timer控件實(shí)現(xiàn)倒計(jì)時(shí)功能
在某些考試系統(tǒng)的界面上有一個(gè)倒計(jì)時(shí)器控制考試的時(shí)間,在Timer事件中加入如下代碼即可:
Dim time As DateTime = CDate(TextBox1.Text)
time = time.AddSeconds(-1)
TextBox1.Text = time.ToLongTimeString.ToString
其中,文本框控件TextBox1供用戶輸入總時(shí)長。
4 利用Timer控件實(shí)現(xiàn)滾動(dòng)字幕效果
在窗體中設(shè)計(jì)這樣的效果:一行文字在窗體中自左向右逐漸滾動(dòng),當(dāng)最右邊的文字到達(dá)窗體右邊界時(shí)能自動(dòng)彈回去,即整行文字自右向左逐漸滾動(dòng);同理,當(dāng)最左邊的文字到達(dá)窗體左邊界時(shí)能自動(dòng)改變方向向右滾動(dòng),如此反復(fù)。
首先,在窗體中加入一個(gè)Label控件Label1,其Text屬性設(shè)置為要滾動(dòng)顯示的文字。Timer控件的Interval屬性決定文字滾動(dòng)的速度,其值越大滾動(dòng)速度越慢,反之亦然。程序如下:
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控件實(shí)現(xiàn)進(jìn)度條功能
進(jìn)度條能直觀地顯示某個(gè)操作正進(jìn)行了多少時(shí)間,給用戶提供直觀的視覺反饋,使用戶確信沒有理由中止操作或關(guān)閉計(jì)算機(jī)。VB.NET中雖具有進(jìn)度條(ProgressBar)控件,但完全可用Timer控件與Label控件共同替代。在窗體中需添加兩個(gè)Label控件,Label1用于顯示具體的百分比數(shù)值;Label2作為進(jìn)度條滾動(dòng),其背景色設(shè)置成藍(lán)色。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
運(yùn)行結(jié)果,如圖2所示。
6 利用Timer控件實(shí)現(xiàn)動(dòng)畫效果
要制作投籃的動(dòng)畫效果,現(xiàn)將人物在不同位置不同動(dòng)作的圖片存為GIF文件1.gif~5.gif。在不同的時(shí)間顯示不同的文件,由于更新圖片速度很快,因此呈現(xiàn)在眼前的是連續(xù)播放的動(dòng)畫效果,如圖3所示。
設(shè)置一個(gè)模塊變量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 結(jié) 語
計(jì)時(shí)器控件在實(shí)際運(yùn)用中還有其他的功能,如實(shí)現(xiàn)報(bào)警等。善于將計(jì)時(shí)器與其他控件結(jié)合起來使用,會(huì)使程序更靈活,給觀眾意想不到的效果。
參考文獻(xiàn):
[1] 崔金寶.VB中Timer控件的應(yīng)用研究[J].科技信息,2006,(7).
[2] 陳承歡.巧用VB.NET的Timer控件[J].電腦學(xué)習(xí),2005,(2).
[3] 張秀愛.VB.NET中Timer控件的應(yīng)用[J].科技信息,2007,(35).
[4] 張濟(jì)仕,渠慎明.進(jìn)一步運(yùn)用VB中的Timer控件[J].電腦知識(shí)與技術(shù)(學(xué) 術(shù)交流),2007,(21).