實(shí)例解析VB的事件驅(qū)動(dòng)編程

字號(hào):

本文我們將通過(guò)Visual Basic和 BetterState For Visual Basic來(lái)設(shè)計(jì)一個(gè)簡(jiǎn)單的例子。這個(gè)例子的主要目的是在BetterState環(huán)境下設(shè)計(jì)狀態(tài)圖。對(duì)于用戶來(lái)說(shuō),就是建立設(shè)計(jì)的Visual Basic前端部分。
    在這個(gè)例子中我們使用VB代碼生成器,因?yàn)檫@種代碼生成器是每個(gè)版本的BetterState Pro都提供的。
    考慮一個(gè)簡(jiǎn)單的例子:一個(gè)VB窗口,包含一個(gè)標(biāo)準(zhǔn)的Visual Basic定時(shí)器控件,命名為Timer1;和一個(gè)自定義圖片控件,用來(lái)表示一個(gè)交通燈,命名為L(zhǎng)ight1。它可以是綠色或紅色。假設(shè)我們希望信號(hào)燈在每次Timer事件發(fā)生時(shí),在紅綠之間變換。這種行為很容易用狀態(tài)機(jī)來(lái)模擬,并可視化地表現(xiàn)為一張狀態(tài)圖,如圖1所示。
    狀態(tài)機(jī)從Green狀態(tài)開始,每次Timer1_Timer事件(固定時(shí)間間隔)發(fā)生,狀態(tài)機(jī)在Red Green兩個(gè)狀態(tài)間交替轉(zhuǎn)換,因此適當(dāng)?shù)馗淖僉ight1的Color屬性。很顯然,我們可以在Timer1_Timer事件中使用簡(jiǎn)單的VB代碼來(lái)達(dá)到同樣的結(jié)果,編寫子程序,使用一個(gè)變量,命名為L(zhǎng)ightState,它的值為0或1,使用if-then-else語(yǔ)句交替的改變變量的值。
    If (LightState=0) Then LightState = 1 Light1.Color = 1 ‘RED Else LightState = 0 Light1.Color = 0 ‘GREEN End If