实例解析VB的事件驱动编程

出处:Examlink收集整理 作者:唐易龙 日期:2007年06月08日 15时50分
  本文我们将通过Visual Basic和 BetterState For Visual Basic来设计一个简单的例子。这个例子的主要目的是在BetterState环境下设计状态图。对于用户来说,就是建立设计的Visual Basic前端部分。
  
  在这个例子中我们使用VB代码生成器,因为这种代码生成器是每个版本的BetterState Pro都提供的。
  
  考虑一个简单的例子:一个VB窗口,包含一个标准的Visual Basic定时器控件,命名为Timer1;和一个自定义图片控件,用来表示一个交通灯,命名为Light1。它可以是绿色或红色。假设我们希望信号灯在每次Timer事件发生时,在红绿之间变换。这种行为很容易用状态机来模拟,并可视化地表现为一张状态图,如图1所示。
  
 

  
图1 简单的两个状态的交通灯控制器

  
  状态机从Green状态开始,每次Timer1_Timer事件(固定时间间隔)发生,状态机在Red Green两个状态间交替转换,因此适当地改变Light1的Color属性。很显然,我们可以在Timer1_Timer事件中使用简单的VB代码来达到同样的结果,编写子程序,使用一个变量,命名为LightState,它的值为0或1,使用if-then-else语句交替的改变变量的值。
  
  If (LightState=0) Then LightState = 1 Light1.Color = 1 ‘RED Else LightState = 0 Light1.Color = 0 ‘GREEN End If
 实际上,这就是BetterState代码生成器将自动为你所作的工作;你只要画出状态图,代码生成器会自动生成代码。不过,图形化编程手段的好处不仅仅是这些,让我们考虑一个复杂一点的例子。
  
  第一个扩展的例子如图2所示,增加了以下修改:
  
  两个控制按钮,分别命名为NewTruck和NewCar;
  
  点击NewCar 按钮3次后Light1从Red变 Green,或者在点击一次或数次NewCar后再点击NewTruck。
  
 

  
图2 修改后的交通灯控制器


  
  图18展示了能够描述这种行为的扩展状态图。注意在图中增加了层次结构,连接OneORMore状态和Green状态的转换意味着如果点击一次或多次New-Car(令当前状态是OneORMore的子状态之一)。又点击了NewTruck,状态就会变为Green。

 

最后更新时间:2008-05-28 11:52:49
文章评论
共有 0 位网友发表了评论
用户名: 新注册) 密码: 匿名评论 [查看所有评论]

评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
您可以用以下几种方式找到此文章

考试全流程